changeset 731:0e164aaa7409

Work on getting the resource subsystem working again ..
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 21 Apr 2013 19:46:52 +0300
parents 3d813c81f33c
children 2f02d9b4caa3
files dmres.c dmres.h
diffstat 2 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/dmres.c	Sun Apr 21 19:29:00 2013 +0300
+++ b/dmres.c	Sun Apr 21 19:46:52 2013 +0300
@@ -49,9 +49,12 @@
 
 void dmResourceFreeRawData(DMResource *node)
 {
-    dmFree(node->rawData);
-    node->rawData = NULL;
-    node->flags &= ~DMF_LOADED_RAW;
+    if ((node->flags & DMF_UNALLOCATED) == 0)
+    {
+        dmFree(node->rawData);
+        node->rawData = NULL;
+        node->flags &= ~DMF_LOADED_RAW;
+    }
 }
 
 
@@ -540,7 +543,6 @@
 }
 
 
-
 #ifdef DM_USE_PACKFS
 DMResourceOps dfPackFileOps =
 {
@@ -697,7 +699,7 @@
         if ((*phandle = handle = dmResourceNew(lib, filename, size)) == NULL)
             return DMERR_MALLOC;
 
-        handle->flags   = DMF_LOADED_RAW;
+        handle->flags   = DMF_LOADED_RAW | DMF_UNALLOCATED;
         handle->fops    = &dfMemIOFileOps;
         handle->rawData = buf;
         dmResourceInsert(lib, handle);
--- a/dmres.h	Sun Apr 21 19:29:00 2013 +0300
+++ b/dmres.h	Sun Apr 21 19:46:52 2013 +0300
@@ -38,6 +38,7 @@
 {
     DMF_PERSIST     = 0x0001, // Persist loaded RAW resource
     DMF_TEMPORARY   = 0x0002,
+    DMF_UNALLOCATED = 0x0004, // The raw data is not allocated, so do not free it
     DMF_LOADED_RAW  = 0x1000, // Raw data has been loaded
     DMF_LOADED_RES  = 0x2000, // Resource has been loaded
 };