DEADSOFTWARE

manager: remove flag 0x8000 from resource handle id
[flatwaifu.git] / src / memory.c
index bec045671e5a8f3202cefb02bd7f615cb5913c4d..7089cc5cadb64d31aec69a2ecd8dccc6b518821d 100644 (file)
 #include "glob.h"
 #include <stdio.h>
 #include <stdlib.h>
-#include <malloc.h>
 #include <string.h>
 #include "error.h"
 #include "files.h"
 #include "memory.h"
 
-dword dpmi_memavl(void);
-
-extern int d_start,d_end;
-
-extern mwad_t wad[];
-
-static byte m_active=FALSE;
-
+static byte m_active;
 static void *resp[MAX_WAD];
 static short resl[MAX_WAD];
 
-void M_startup(void) {
+void M_startup (void) {
   if(m_active) return;
   logo("M_startup: настройка памяти\n");
   memset(resp,0,sizeof(resp));
@@ -48,13 +40,12 @@ void M_startup(void) {
   m_active=TRUE;
 }
 
-void M_shutdown(void) {
-
+void M_shutdown (void) {
   if(!m_active) return;
   m_active=FALSE;
 }
 
-static void allocres(int h) {
+static void allocres (int h) {
   int *p,s;
 
   if(h>d_start && h<d_end) s=1; else s=0;
@@ -73,16 +64,15 @@ static void allocres(int h) {
   }else F_loadres(h,p,0,wad[h].l);
 }
 
-void *M_lock(int h) {
+void *M_lock (int h) {
   if(h==-1 || h==0xFFFF) return NULL;
-  h&=-1-0x8000;
   if(h>=MAX_WAD) ERR_fatal("M_lock: странный номер ресурса");
   if(!resl[h]) if(!resp[h]) allocres(h);
   ++resl[h];
   return resp[h];
 }
 
-void M_unlock(void *p) {
+void M_unlock (void *p) {
   int h;
 
   if(!p) return;
@@ -91,3 +81,11 @@ void M_unlock(void *p) {
   if(!resl[h]) return;
   --resl[h];
 }
+
+int M_locked (int h) {
+  return (h != -1) && (h != 0xFFFF) && (resl[h] != 0);
+}
+
+int M_was_locked (int h) {
+  return (h != -1) && (h != 0xFFFF) && (resp[h] != NULL);
+}