diff --git a/src/memory.c b/src/memory.c
index 404bbc481b36a967e5fa04c94c406842afd14a0c..bd3c609b860a429a81d4b01b97a1a2b0db33ba63 100644 (file)
--- a/src/memory.c
+++ b/src/memory.c
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "glob.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include "error.h"
-#include "files.h"
#include "memory.h"
-
#include "common/wadres.h"
-#include "common/streams.h"
-
-typedef struct Block {
- int id;
- int ref;
- char data[];
-} Block;
-
-static Block *blocks[MAX_RESOURCES];
void M_startup (void) {
- memset(blocks, 0, sizeof(blocks));
+ // stub
}
void M_shutdown (void) {
}
void *M_lock (int id) {
- assert(id >= -1 && id < MAX_RESOURCES);
- if (id >= 0) {
- Block *x = blocks[id];
- if (x) {
- x->ref += 1;
- return x->data;
- } else {
- x = malloc(sizeof(Block) + WADRES_getsize(id));
- if (x) {
- x->id = id;
- x->ref = 1;
- WADRES_getdata(id, x->data);
- blocks[id] = x;
- return x->data;
- }
- }
- }
- return NULL;
+ return WADRES_lock(id);
}
void M_unlock (void *p) {
- if (p) {
- Block *x = p - sizeof(Block);
- int id = x->id;
- assert(id >= 0 && id < MAX_RESOURCES);
- x->ref -= 1;
- assert(x->ref >= 0);
-#if 0
- if (x->ref == 0) {
- blocks[id] = NULL;
- free(x);
- }
-#endif
- }
+ WADRES_unlock(p);
}
int M_locked (int id) {
- assert(id >= -1 && id < MAX_RESOURCES);
- return (id >= 0) && (blocks[id] != NULL) && (blocks[id]->ref >= 1);
+ return WADRES_locked(id);
}
int M_was_locked (int id) {
- assert(id >= -1 && id < MAX_RESOURCES);
- return (id >= 0) && (blocks[id] != NULL) && (blocks[id]->ref >= 0);
+ return WADRES_was_locked(id);
}