diff options
author | Max Horn | 2011-05-12 15:03:58 +0200 |
---|---|---|
committer | Max Horn | 2011-05-13 11:47:12 +0200 |
commit | 107e25ff5bc65ccca62c8fe0a51cf978ee86dae4 (patch) | |
tree | 4ec512b37c922fadc540669e80b25cd3d9cc4bb3 /engines/scumm/resource.cpp | |
parent | ff3087e56cfe45ba94e26dece0ac4a75a8774956 (diff) | |
download | scummvm-rg350-107e25ff5bc65ccca62c8fe0a51cf978ee86dae4.tar.gz scummvm-rg350-107e25ff5bc65ccca62c8fe0a51cf978ee86dae4.tar.bz2 scummvm-rg350-107e25ff5bc65ccca62c8fe0a51cf978ee86dae4.zip |
SCUMM: Document resource usage count / expiry a little bit
Diffstat (limited to 'engines/scumm/resource.cpp')
-rw-r--r-- | engines/scumm/resource.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/engines/scumm/resource.cpp b/engines/scumm/resource.cpp index b9f88b2389..3b278a6b80 100644 --- a/engines/scumm/resource.cpp +++ b/engines/scumm/resource.cpp @@ -762,12 +762,13 @@ byte *ScummEngine::getStringAddressVar(int i) { } void ResourceManager::increaseExpireCounter() { - if (!(++_expireCounter)) { - increaseResourceCounter(); + ++_expireCounter; + if (_expireCounter == 0) { // overflow? + increaseResourceCounters(); } } -void ResourceManager::increaseResourceCounter() { +void ResourceManager::increaseResourceCounters() { int i, j; byte counter; @@ -781,9 +782,9 @@ void ResourceManager::increaseResourceCounter() { } } -void ResourceManager::setResourceCounter(int type, int idx, byte flag) { - _types[type].flags[idx] &= ~RF_USAGE; - _types[type].flags[idx] |= flag; +void ResourceManager::setResourceCounter(int type, int idx, byte counter) { + _types[type].flags[idx] &= RF_LOCK; // Clear lower 7 bits, preserve the lock bit. + _types[type].flags[idx] |= counter; // Update the usage counter } /* 2 bytes safety area to make "precaching" of bytes in the gdi drawer easier */ @@ -969,7 +970,7 @@ void ResourceManager::expireResources(uint32 size) { if (_expireCounter != 0xFF) { _expireCounter = 0xFF; - increaseResourceCounter(); + increaseResourceCounters(); } if (size + _allocatedSize < _maxHeapThreshold) @@ -1000,7 +1001,7 @@ void ResourceManager::expireResources(uint32 size) { nukeResource(best_type, best_res); } while (size + _allocatedSize > _minHeapThreshold); - increaseResourceCounter(); + increaseResourceCounters(); debugC(DEBUG_RESOURCE, "Expired resources, mem %d -> %d", oldAllocatedSize, _allocatedSize); } |