diff options
Diffstat (limited to 'src/FbTk')
-rw-r--r-- | src/FbTk/ImageControl.cc | 12 | ||||
-rw-r--r-- | src/FbTk/ImageControl.hh | 3 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/FbTk/ImageControl.cc b/src/FbTk/ImageControl.cc index 510ea35..cd9774f 100644 --- a/src/FbTk/ImageControl.cc +++ b/src/FbTk/ImageControl.cc | |||
@@ -177,7 +177,7 @@ struct ImageControl::Cache { | |||
177 | ImageControl::ImageControl(int screen_num, | 177 | ImageControl::ImageControl(int screen_num, |
178 | int cpc, unsigned int cache_timeout, unsigned long cmax): | 178 | int cpc, unsigned int cache_timeout, unsigned long cmax): |
179 | m_colors_per_channel(cpc), | 179 | m_colors_per_channel(cpc), |
180 | m_screen_num(screen_num) { | 180 | m_screen_num(screen_num), m_cache_max(cmax) { |
181 | 181 | ||
182 | Display *disp = FbTk::App::instance()->display(); | 182 | Display *disp = FbTk::App::instance()->display(); |
183 | 183 | ||
@@ -185,8 +185,6 @@ ImageControl::ImageControl(int screen_num, | |||
185 | m_visual = DefaultVisual(disp, screen_num); | 185 | m_visual = DefaultVisual(disp, screen_num); |
186 | m_colormap = DefaultColormap(disp, screen_num); | 186 | m_colormap = DefaultColormap(disp, screen_num); |
187 | 187 | ||
188 | cache_max = cmax; | ||
189 | |||
190 | RefCount<Command<void> > clean_cache(new SimpleCommand<ImageControl>(*this, &ImageControl::cleanCache)); | 188 | RefCount<Command<void> > clean_cache(new SimpleCommand<ImageControl>(*this, &ImageControl::cleanCache)); |
191 | m_timer.setCommand(clean_cache); | 189 | m_timer.setCommand(clean_cache); |
192 | setCacheTimeout(cache_timeout * FbTk::FbTime::IN_MILLISECONDS); | 190 | setCacheTimeout(cache_timeout * FbTk::FbTime::IN_MILLISECONDS); |
@@ -226,6 +224,12 @@ void ImageControl::setCacheTimeout(unsigned int cache_timeout) { | |||
226 | m_timer.stop(); | 224 | m_timer.stop(); |
227 | } | 225 | } |
228 | 226 | ||
227 | void ImageControl::setCacheMax(unsigned long cache_max) { | ||
228 | m_cache_max = cache_max; | ||
229 | if (cache.size() > m_cache_max) | ||
230 | cleanCache(); | ||
231 | } | ||
232 | |||
229 | Pixmap ImageControl::searchCache(unsigned int width, unsigned int height, | 233 | Pixmap ImageControl::searchCache(unsigned int width, unsigned int height, |
230 | const Texture &text, FbTk::Orientation orient) const { | 234 | const Texture &text, FbTk::Orientation orient) const { |
231 | 235 | ||
@@ -326,7 +330,7 @@ Pixmap ImageControl::renderImage(unsigned int width, unsigned int height, | |||
326 | 330 | ||
327 | cache.push_back(tmp); | 331 | cache.push_back(tmp); |
328 | 332 | ||
329 | if (cache.size() > cache_max) | 333 | if (cache.size() > m_cache_max) |
330 | cleanCache(); | 334 | cleanCache(); |
331 | 335 | ||
332 | return pixmap; | 336 | return pixmap; |
diff --git a/src/FbTk/ImageControl.hh b/src/FbTk/ImageControl.hh index 1795bbf..983b319 100644 --- a/src/FbTk/ImageControl.hh +++ b/src/FbTk/ImageControl.hh | |||
@@ -46,6 +46,7 @@ public: | |||
46 | virtual ~ImageControl(); | 46 | virtual ~ImageControl(); |
47 | 47 | ||
48 | void setCacheTimeout(unsigned int cache_timeout); | 48 | void setCacheTimeout(unsigned int cache_timeout); |
49 | void setCacheMax(unsigned long cache_max); | ||
49 | 50 | ||
50 | int depth() const { return m_screen_depth; } | 51 | int depth() const { return m_screen_depth; } |
51 | int colorsPerChannel() const { return m_colors_per_channel; } | 52 | int colorsPerChannel() const { return m_colors_per_channel; } |
@@ -112,7 +113,7 @@ private: | |||
112 | typedef std::list<Cache *> CacheList; | 113 | typedef std::list<Cache *> CacheList; |
113 | 114 | ||
114 | mutable CacheList cache; | 115 | mutable CacheList cache; |
115 | unsigned long cache_max; | 116 | unsigned long m_cache_max; |
116 | }; | 117 | }; |
117 | 118 | ||
118 | } // end namespace FbTk | 119 | } // end namespace FbTk |