diff options
author | Frank Gevaerts <frank@gevaerts.be> | 2011-04-10 13:25:47 +0000 |
---|---|---|
committer | Frank Gevaerts <frank@gevaerts.be> | 2011-04-10 13:25:47 +0000 |
commit | d09f97880a51d915feae563248b1bdcbcd845156 (patch) | |
tree | 29a8c6d6ceed9b76eb9a8f53dbf7c2084763ce98 /apps | |
parent | b66239b4363863d3db22fe89ca9909eea11f5097 (diff) | |
download | rockbox-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
Diffstat (limited to 'apps')
-rw-r--r-- | apps/gui/skin_engine/skin_backdrops.c | 14 | ||||
-rw-r--r-- | apps/onplay.c | 15 | ||||
-rw-r--r-- | apps/settings.h | 2 | ||||
-rw-r--r-- | apps/settings_list.c | 2 |
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) | |||
156 | void skin_backdrop_load_setting(void) | 153 | void 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 |
1018 | static bool set_backdrop(void) | 1018 | static 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"), |