mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
AGS: Changed SpriteCache::FreeMem to comply with sound cache
From upstream 94a462d52d5533f4ebb4cef1bbddd280b4f876a2
This commit is contained in:
@@ -215,8 +215,8 @@ Bitmap *SpriteCache::operator [] (sprkey_t index) {
|
||||
return _spriteData[index].Image;
|
||||
}
|
||||
|
||||
void SpriteCache::FreeMem(size_t threshold) {
|
||||
for (int tries = 0; (_mru.size() > 0) && (_cacheSize >= threshold); ++tries) {
|
||||
void SpriteCache::FreeMem(size_t space) {
|
||||
for (int tries = 0; (_mru.size() > 0) && (_cacheSize >= (_maxCacheSize - space)); ++tries) {
|
||||
DisposeOldest();
|
||||
if (tries > 1000) { // ???
|
||||
Debug::Printf(kDbgGroup_SprCache, kDbgMsg_Error, "RUNTIME CACHE ERROR: STUCK IN FREE_UP_MEM; RESETTING CACHE");
|
||||
@@ -299,8 +299,6 @@ size_t SpriteCache::LoadSprite(sprkey_t index) {
|
||||
if (index < 0 || (size_t)index >= _spriteData.size())
|
||||
return 0;
|
||||
|
||||
FreeMem(_maxCacheSize);
|
||||
|
||||
sprkey_t load_index = GetDataIndex(index);
|
||||
Bitmap *image;
|
||||
HError err = _file.LoadSprite(load_index, image);
|
||||
@@ -330,10 +328,10 @@ size_t SpriteCache::LoadSprite(sprkey_t index) {
|
||||
if (index != 0) // leave sprite 0 locked
|
||||
_spriteData[index].Flags &= ~SPRCACHEFLAG_LOCKED;
|
||||
|
||||
// we need to store this because the main program might
|
||||
// alter spritewidth/height if it resizes stuff
|
||||
size_t size = _sprInfos[index].Width * _sprInfos[index].Height *
|
||||
const size_t size = _sprInfos[index].Width * _sprInfos[index].Height *
|
||||
_spriteData[index].Image->GetBPP();
|
||||
// Clear up space before adding to cache
|
||||
FreeMem(size);
|
||||
_spriteData[index].Size = size;
|
||||
_cacheSize += size;
|
||||
|
||||
|
||||
@@ -154,8 +154,8 @@ private:
|
||||
sprkey_t GetDataIndex(sprkey_t index);
|
||||
// Delete the oldest (least recently used) image in cache
|
||||
void DisposeOldest();
|
||||
// Keep disposing oldest elements until cache size is reduced to the given threshold
|
||||
void FreeMem(size_t threshold);
|
||||
// Keep disposing oldest elements until cache has at least the given free space
|
||||
void FreeMem(size_t space);
|
||||
|
||||
// Information required for the sprite streaming
|
||||
struct SpriteData {
|
||||
|
||||
Reference in New Issue
Block a user