void ImageCache::CleanUp(int min_size_free) { Fragment *f = (Fragment *)cache.Last(); while (f && pixelcount + min_size_free > cachesize) { OpBitmap *bm = f->GetFragment(); pixelcount -= bm->Width() * bm->Height(); Fragment *prev = (Fragment *)f->Pred(); f->Out(); OP_DELETE(f); f = prev; } }
void ImageCache::Remove(OpBitmap *bitmap) { Fragment *f = (Fragment *)cache.First(); while (f) { Fragment *next = (Fragment *)f->Suc(); if (f->GetOriginal() == bitmap) { OpBitmap *bm = f->GetFragment(); pixelcount -= bm->Width() * bm->Height(); f->Out(); OP_DELETE(f); } f = next; } }
BOOL ImageCache::RemoveSharedMemoryBitmap() { Fragment *f = (Fragment *)cache.Last(); while (f) { X11OpBitmap* bm = (X11OpBitmap*)f->GetFragment(); if( bm->HasSharedMemory() ) { f->Out(); OP_DELETE(f); return TRUE; } f = (Fragment *)f->Pred(); } return FALSE; }