summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Gevaerts <frank@gevaerts.be>2011-04-10 13:25:47 +0000
committerFrank Gevaerts <frank@gevaerts.be>2011-04-10 13:25:47 +0000
commitd09f97880a51d915feae563248b1bdcbcd845156 (patch)
tree29a8c6d6ceed9b76eb9a8f53dbf7c2084763ce98
parentb66239b4363863d3db22fe89ca9909eea11f5097 (diff)
downloadrockbox-d09f97880a51d915feae563248b1bdcbcd845156.tar.gz
rockbox-d09f97880a51d915feae563248b1bdcbcd845156.zip
Support loading backdrops from anywhere in the filesystem. Fixes FS#12041
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29700 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/gui/skin_engine/skin_backdrops.c14
-rw-r--r--apps/onplay.c15
-rw-r--r--apps/settings.h2
-rw-r--r--apps/settings_list.c2
4 files changed, 10 insertions, 23 deletions
diff --git a/apps/gui/skin_engine/skin_backdrops.c b/apps/gui/skin_engine/skin_backdrops.c
index 3e04beaae0..12950a666c 100644
--- a/apps/gui/skin_engine/skin_backdrops.c
+++ b/apps/gui/skin_engine/skin_backdrops.c
@@ -113,10 +113,7 @@ bool skin_backdrops_preload(void)
113 if (screen == SCREEN_MAIN && global_settings.backdrop_file[0] && 113 if (screen == SCREEN_MAIN && global_settings.backdrop_file[0] &&
114 global_settings.backdrop_file[0] != '-' && filename[0] == '-') 114 global_settings.backdrop_file[0] != '-' && filename[0] == '-')
115 { 115 {
116 char* temp = filename+2; /* slightly hacky to get a buffer */ 116 filename = global_settings.backdrop_file;
117 size_t size = sizeof(backdrops[i].name) - 2;
118 snprintf(temp, size, BACKDROP_DIR "/%s.bmp", global_settings.backdrop_file);
119 filename = temp;
120 } 117 }
121 if (*filename && *filename != '-') 118 if (*filename && *filename != '-')
122 { 119 {
@@ -156,7 +153,6 @@ void skin_backdrop_unload(int backdrop_id)
156void skin_backdrop_load_setting(void) 153void skin_backdrop_load_setting(void)
157{ 154{
158 int i; 155 int i;
159 char filename[MAX_PATH];
160 for(i=0;i<SKINNABLE_SCREENS_COUNT*NB_SCREENS;i++) 156 for(i=0;i<SKINNABLE_SCREENS_COUNT*NB_SCREENS;i++)
161 { 157 {
162 if (backdrops[i].name[0] == '-' && backdrops[i].screen == SCREEN_MAIN) 158 if (backdrops[i].name[0] == '-' && backdrops[i].screen == SCREEN_MAIN)
@@ -166,11 +162,11 @@ void skin_backdrop_load_setting(void)
166 { 162 {
167 if (!backdrops[i].buffer) 163 if (!backdrops[i].buffer)
168 backdrops[i].buffer = (char*)skin_buffer_alloc(LCD_BACKDROP_BYTES); 164 backdrops[i].buffer = (char*)skin_buffer_alloc(LCD_BACKDROP_BYTES);
169 snprintf(filename, sizeof filename, BACKDROP_DIR "/%s.bmp", 165
170 global_settings.backdrop_file);
171 bool loaded = backdrops[i].buffer && 166 bool loaded = backdrops[i].buffer &&
172 screens[SCREEN_MAIN].backdrop_load(filename, 167 screens[SCREEN_MAIN].backdrop_load(
173 backdrops[i].buffer); 168 global_settings.backdrop_file,
169 backdrops[i].buffer);
174 backdrops[i].name[2] = loaded ? '.' : '\0'; 170 backdrops[i].name[2] = loaded ? '.' : '\0';
175 return; 171 return;
176 } 172 }
diff --git a/apps/onplay.c b/apps/onplay.c
index 2411952acf..a2a3671d3e 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -1017,18 +1017,9 @@ MENUITEM_FUNCTION(add_to_faves_item, MENU_FUNC_USEPARAM, ID2P(LANG_ADD_TO_FAVES)
1017#if LCD_DEPTH > 1 1017#if LCD_DEPTH > 1
1018static bool set_backdrop(void) 1018static bool set_backdrop(void)
1019{ 1019{
1020 /* load the image 1020 strlcpy(global_settings.backdrop_file, selected_file,
1021 if(sb_set_backdrop(SCREEN_MAIN, selected_file)) { 1021 sizeof(global_settings.backdrop_file));
1022 splash(HZ, str(LANG_BACKDROP_LOADED)); 1022 settings_save();
1023 set_file(selected_file, (char *)global_settings.backdrop_file,
1024 MAX_FILENAME);
1025 return true;
1026 } else {
1027 splash(HZ, str(LANG_BACKDROP_FAILED));
1028 return false;
1029 }*/
1030 set_file(selected_file, (char *)global_settings.backdrop_file,
1031 MAX_FILENAME);
1032 skin_backdrop_load_setting(); 1023 skin_backdrop_load_setting();
1033 return true; 1024 return true;
1034} 1025}
diff --git a/apps/settings.h b/apps/settings.h
index 0734cf0668..7dca65ad9a 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -588,7 +588,7 @@ struct user_settings
588#endif /* HAVE_TAGCACHE */ 588#endif /* HAVE_TAGCACHE */
589 589
590#if LCD_DEPTH > 1 590#if LCD_DEPTH > 1
591 unsigned char backdrop_file[MAX_FILENAME+1]; /* backdrop bitmap file */ 591 unsigned char backdrop_file[MAX_PATHNAME+1]; /* backdrop bitmap file */
592#endif 592#endif
593 593
594#ifdef HAVE_LCD_COLOR 594#ifdef HAVE_LCD_COLOR
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 7f2cf38072..bd4a473389 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1587,7 +1587,7 @@ const struct settings_list settings[] = {
1587 TEXT_SETTING(0,lang_file,"lang","",LANG_DIR "/",".lng"), 1587 TEXT_SETTING(0,lang_file,"lang","",LANG_DIR "/",".lng"),
1588#if LCD_DEPTH > 1 1588#if LCD_DEPTH > 1
1589 TEXT_SETTING(F_THEMESETTING,backdrop_file,"backdrop", 1589 TEXT_SETTING(F_THEMESETTING,backdrop_file,"backdrop",
1590 DEFAULT_BACKDROP, BACKDROP_DIR "/", ".bmp"), 1590 DEFAULT_BACKDROP, NULL, NULL),
1591#endif 1591#endif
1592#ifdef HAVE_LCD_BITMAP 1592#ifdef HAVE_LCD_BITMAP
1593 TEXT_SETTING(0,kbd_file,"kbd","-",ROCKBOX_DIR "/",".kbd"), 1593 TEXT_SETTING(0,kbd_file,"kbd","-",ROCKBOX_DIR "/",".kbd"),