From 4e66739ff583db0e4be981d14a9052ae77c3a9b7 Mon Sep 17 00:00:00 2001 From: Thilo Graf Date: Wed, 2 Aug 2017 08:59:56 +0200 Subject: [PATCH] CFrameBuffer: fb-generic.cpp - add methode for clean up icon cache This could be required eg. on changed resoulutions or changed iconsets on runtime. --- src/driver/fb_generic.cpp | 20 ++++++++++++-------- src/driver/fb_generic.h | 1 + 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/driver/fb_generic.cpp b/src/driver/fb_generic.cpp index af678dc7c..ad9f77d34 100644 --- a/src/driver/fb_generic.cpp +++ b/src/driver/fb_generic.cpp @@ -207,16 +207,9 @@ nolfb: lbb = lfb = NULL; } - CFrameBuffer::~CFrameBuffer() { - std::map::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::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()) diff --git a/src/driver/fb_generic.h b/src/driver/fb_generic.h index b355377ce..4b68e1e18 100644 --- a/src/driver/fb_generic.h +++ b/src/driver/fb_generic.h @@ -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);