CFrameBuffer: fb-generic.cpp - add methode for clean up icon cache

This could be required eg. on changed resoulutions or
changed iconsets on runtime.
This commit is contained in:
2017-08-02 08:59:56 +02:00
parent 9678adc401
commit 4e66739ff5
2 changed files with 13 additions and 8 deletions

View File

@@ -207,16 +207,9 @@ nolfb:
lbb = lfb = NULL;
}
CFrameBuffer::~CFrameBuffer()
{
std::map<std::string, rawIcon>::iterator it;
for(it = icon_cache.begin(); it != icon_cache.end(); ++it) {
/* printf("FB: delete cached icon %s: %x\n", it->first.c_str(), (int) it->second.data); */
cs_free_uncached(it->second.data);
}
icon_cache.clear();
clearIconCache();
if (background) {
delete[] background;
@@ -921,6 +914,17 @@ _display:
return true;
}
void CFrameBuffer::clearIconCache()
{
std::map<std::string, rawIcon>::iterator it;
for(it = icon_cache.begin(); it != icon_cache.end(); ++it) {
/* printf("FB: delete cached icon %s: %x\n", it->first.c_str(), (int) it->second.data); */
cs_free_uncached(it->second.data);
}
icon_cache.clear();
}
void CFrameBuffer::loadPal(const std::string & filename, const unsigned char offset, const unsigned char endidx)
{
if (!getActive())

View File

@@ -239,6 +239,7 @@ class CFrameBuffer : public sigc::trackable
const int h = 0, const unsigned char offset = 1, bool paint = true, bool paintBg = false, const fb_pixel_t colBg = 0);
bool paintIcon8(const std::string & filename, const int x, const int y, const unsigned char offset = 0);
void loadPal (const std::string & filename, const unsigned char offset = 0, const unsigned char endidx = 255);
void clearIconCache();
bool loadPicture2Mem (const std::string & filename, fb_pixel_t * const memp);
bool loadPicture2FrameBuffer(const std::string & filename);