summaryrefslogtreecommitdiff
path: root/apps/gui/skin_engine/skin_parser.c
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2010-02-16 05:24:27 +0000
committerJonathan Gordon <rockbox@jdgordon.info>2010-02-16 05:24:27 +0000
commit877d378710337e7b89b015e3901e467fbcff53be (patch)
treee372499593369a7dd64f2f8dc72994bc183a829e /apps/gui/skin_engine/skin_parser.c
parent82f05895af2e361b983aa782e4294a641b287429 (diff)
downloadrockbox-877d378710337e7b89b015e3901e467fbcff53be.tar.gz
rockbox-877d378710337e7b89b015e3901e467fbcff53be.zip
Reuse the backdrop buffers if 2 skins use the same backdrop (on the same screen of course)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24690 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui/skin_engine/skin_parser.c')
-rw-r--r--apps/gui/skin_engine/skin_parser.c43
1 files changed, 3 insertions, 40 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index 034ff532f0..fe68c7c57e 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -567,7 +567,7 @@ static int get_image_id(int c)
567 return -1; 567 return -1;
568} 568}
569 569
570static char *get_image_filename(const char *start, const char* bmpdir, 570char *get_image_filename(const char *start, const char* bmpdir,
571 char *buf, int buf_size) 571 char *buf, int buf_size)
572{ 572{
573 const char *end = strchr(start, '|'); 573 const char *end = strchr(start, '|');
@@ -2045,45 +2045,8 @@ static bool load_skin_bitmaps(struct wps_data *wps_data, char *bmpdir)
2045 */ 2045 */
2046 if (wps_data->backdrop) 2046 if (wps_data->backdrop)
2047 { 2047 {
2048 char img_path[MAX_PATH]; 2048 wps_data->backdrop = skin_backdrop_load(wps_data->backdrop,
2049 bool loaded = false; 2049 bmpdir, curr_screen);
2050 size_t buf_size;
2051#if defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1)
2052 if (curr_screen == SCREEN_REMOTE)
2053 buf_size = REMOTE_LCD_BACKDROP_BYTES;
2054 else
2055#endif
2056 buf_size = LCD_BACKDROP_BYTES;
2057 if (wps_data->backdrop[0] == '-')
2058 {
2059#if NB_SCREENS > 1
2060 if (curr_screen == SCREEN_REMOTE)
2061 {
2062 wps_data->backdrop = NULL;
2063 return true;
2064 }
2065 else
2066#endif
2067 {
2068 if (!global_settings.backdrop_file[0])
2069 {
2070 wps_data->backdrop = NULL;
2071 return true;
2072 }
2073 snprintf(img_path, sizeof(img_path), "%s/%s.bmp",
2074 BACKDROP_DIR, global_settings.backdrop_file);
2075 }
2076 }
2077 else
2078 {
2079 get_image_filename(wps_data->backdrop, bmpdir,
2080 img_path, sizeof(img_path));
2081 }
2082 char *buffer = skin_buffer_alloc(buf_size);
2083 if (!buffer)
2084 return false;
2085 loaded = screens[curr_screen].backdrop_load(img_path, buffer);
2086 wps_data->backdrop = loaded ? buffer : NULL;
2087 } 2050 }
2088#endif /* has backdrop support */ 2051#endif /* has backdrop support */
2089 2052