aboutsummaryrefslogtreecommitdiff
path: root/sword1/resman.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sword1/resman.cpp')
-rw-r--r--sword1/resman.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/sword1/resman.cpp b/sword1/resman.cpp
index ecb53ffe0b..63cb31409c 100644
--- a/sword1/resman.cpp
+++ b/sword1/resman.cpp
@@ -46,8 +46,8 @@ namespace Sword1 {
#define MAX_PATH_LEN 260
-ResMan::ResMan(const char *resFile, MemMan *pMemoMan) {
- _memMan = pMemoMan;
+ResMan::ResMan(const char *resFile) {
+ _memMan = new MemMan();
loadCluDescript(resFile);
}
@@ -71,7 +71,9 @@ ResMan::~ResMan(void) {
}
debug(0, "ResMan closed\n");
#endif
+ flush();
freeCluDescript();
+ delete _memMan;
}
void ResMan::loadCluDescript(const char *fileName) {
@@ -165,6 +167,8 @@ void ResMan::flush(void) {
_memMan->setCondition(group->resHandle + resCnt, MEM_CAN_FREE);
group->resHandle[resCnt].refCount = 0;
}
+ // the memory manager cached the blocks we asked it to free, so explicitly make it free them
+ _memMan->flush();
}
void *ResMan::fetchRes(uint32 id) {