Mercurial > hg > dmlib
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 };