diff --git a/src/driver/framebuffer_ng.cpp b/src/driver/framebuffer_ng.cpp index 327258dc3..7f4152c90 100644 --- a/src/driver/framebuffer_ng.cpp +++ b/src/driver/framebuffer_ng.cpp @@ -59,6 +59,7 @@ extern int gfxfd; extern CPictureViewer * g_PicViewer; #define ICON_CACHE_SIZE 1024*1024*2 // 2mb +#define ICONDIR_VAR "/var/tuxbox/icons/" #define BACKGROUNDIMAGEWIDTH 720 @@ -809,7 +810,13 @@ bool CFrameBuffer::paintIcon(const std::string & filename, const int x, const in /* we cache and check original name */ it = icon_cache.find(filename); if(it == icon_cache.end()) { - std::string newname = iconBasePath + filename.c_str() + ".png"; + std::string newname = filename; + /* if it is not an absolute path, search in configured paths */ + if (filename.find("/", 0) == std::string::npos) { + newname = ICONDIR_VAR + filename + ".png"; + if (access(newname.c_str(), F_OK)) + newname = iconBasePath + filename + ".png"; + } //printf("CFrameBuffer::paintIcon: check for %s\n", newname.c_str());fflush(stdout); data = g_PicViewer->getIcon(newname, &width, &height); @@ -828,7 +835,9 @@ bool CFrameBuffer::paintIcon(const std::string & filename, const int x, const in goto _display; } - newname = iconBasePath + filename.c_str() + ".raw"; + newname = ICONDIR_VAR + filename + ".raw"; + if (access(newname.c_str(), F_OK)) + newname = iconBasePath + filename + ".raw"; lfd = open(newname.c_str(), O_RDONLY);