From 00e8503d301acc98c012b4ebd5467ebcd99915d0 Mon Sep 17 00:00:00 2001 From: mrwastl Date: Sat, 7 May 2011 21:15:13 +0200 Subject: store failed image paths in image cache and take these into account when loading images -> no more flooding of /var/log/messages --- glcdskin/cache.c | 11 +++++++++++ glcdskin/cache.h | 1 + 2 files changed, 12 insertions(+) diff --git a/glcdskin/cache.c b/glcdskin/cache.c index 83629a0..fdcb4b8 100644 --- a/glcdskin/cache.c +++ b/glcdskin/cache.c @@ -48,6 +48,7 @@ cImageCache::~cImageCache() delete images[i]; } images.clear(); + failedpaths.clear(); } cImage * cImageCache::Get(const std::string & path) @@ -57,6 +58,14 @@ cImage * cImageCache::Get(const std::string & path) uint64_t maxCounter; std::vector ::iterator oldest; + // test if this path has already been stored as invalid path / invalid/non-existent image + for (size_t i = 0; i < failedpaths.size(); i++) { + if (failedpaths[i] == path) { + return NULL; + } + } + + maxCounter = 0; item = NULL; for (it = images.begin(); it != images.end(); it++) @@ -90,6 +99,8 @@ cImage * cImageCache::Get(const std::string & path) } images.push_back(item); return item->Image(); + } else { + failedpaths.push_back(path); } return NULL; } diff --git a/glcdskin/cache.h b/glcdskin/cache.h index 925ebcc..3862b51 100644 --- a/glcdskin/cache.h +++ b/glcdskin/cache.h @@ -46,6 +46,7 @@ private: cSkin * skin; size_t size; std::vector images; + std::vector failedpaths; cImageItem * LoadImage(const std::string & path); public: -- cgit v1.2.3