summaryrefslogtreecommitdiff
path: root/apps/gui
diff options
context:
space:
mode:
authorPeter D'Hoye <peter.dhoye@gmail.com>2006-05-21 11:00:02 +0000
committerPeter D'Hoye <peter.dhoye@gmail.com>2006-05-21 11:00:02 +0000
commit93b899d0fe3426ed50de06d20cdefb6d288e5ec2 (patch)
tree0dd0af26a5797a02f9a1f0139fde9fb60e1844bb /apps/gui
parent6ddb5f24294d68749e53c10a99ca09aca9f9f7eb (diff)
downloadrockbox-93b899d0fe3426ed50de06d20cdefb6d288e5ec2.zip
rockbox-93b899d0fe3426ed50de06d20cdefb6d288e5ec2.tar.gz
rockbox-93b899d0fe3426ed50de06d20cdefb6d288e5ec2.tar.bz2
rockbox-93b899d0fe3426ed50de06d20cdefb6d288e5ec2.tar.xz
Reworked backdrop handling. Fixes a bug that wasn't in the tracker yet ;)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9970 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/gui')
-rw-r--r--apps/gui/gwps-common.c52
-rw-r--r--apps/gui/gwps.c55
-rw-r--r--apps/gui/gwps.h4
3 files changed, 37 insertions, 74 deletions
diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c
index 349c92b..5ab6ce8 100644
--- a/apps/gui/gwps-common.c
+++ b/apps/gui/gwps-common.c
@@ -146,44 +146,31 @@ bool wps_data_preload_tags(struct wps_data *data, char *buf,
case 'X':
/* Backdrop image - must be the same size as the LCD */
{
- int ret = 0;
- struct bitmap bm;
char *ptr = buf+2;
char *pos = NULL;
char imgname[MAX_PATH];
/* format: %X|filename.bmp| */
- {
- /* get filename */
- pos = strchr(ptr, '|');
- if ((pos - ptr) <
- (int)sizeof(imgname)-ROCKBOX_DIR_LEN-2)
- {
- memcpy(imgname, bmpdir, bmpdirlen);
- imgname[bmpdirlen] = '/';
- memcpy(&imgname[bmpdirlen+1],
- ptr, pos - ptr);
- imgname[bmpdirlen+1+pos-ptr] = 0;
- }
- else
- /* filename too long */
- imgname[0] = 0;
-
- ptr = pos+1;
- /* load the image */
- bm.data=(char*)&wps_backdrop[0][0];
- ret = read_bmp_file(imgname, &bm,
- sizeof(wps_backdrop), FORMAT_NATIVE);
-
- if ((ret > 0) && (bm.width == LCD_WIDTH)
- && (bm.height == LCD_HEIGHT)) {
- data->has_backdrop=true;
- return true;
- } else {
- return false;
- }
+ /* get filename */
+ pos = strchr(ptr, '|');
+ if ((pos - ptr) <
+ (int)sizeof(imgname)-ROCKBOX_DIR_LEN-2)
+ {
+ memcpy(imgname, bmpdir, bmpdirlen);
+ imgname[bmpdirlen] = '/';
+ memcpy(&imgname[bmpdirlen+1],
+ ptr, pos - ptr);
+ imgname[bmpdirlen+1+pos-ptr] = 0;
}
+ else
+ {
+ /* filename too long */
+ imgname[0] = 0;
+ }
+
+ /* load the image */
+ return load_wps_backdrop(imgname);
}
break;
@@ -2460,6 +2447,9 @@ bool gui_wps_display(void)
if(i == 0)
{
#ifdef HAVE_LCD_BITMAP
+#ifdef HAVE_LCD_COLOR
+ unload_wps_backdrop();
+#endif
wps_data_load(gui_wps[i].data,
"%s%?it<%?in<%in. |>%it|%fn>\n"
"%s%?ia<%ia|%?d2<%d2|(root)>>\n"
diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c
index b84027c..d7a27e8 100644
--- a/apps/gui/gwps.c
+++ b/apps/gui/gwps.c
@@ -105,18 +105,8 @@ long gui_wps_show(void)
gui_wps_set_margin(&gui_wps[i]);
}
#ifdef HAVE_LCD_COLOR
- gui_wps[SCREEN_MAIN].data->old_backdrop = lcd_get_backdrop();
- if (gui_wps[SCREEN_MAIN].data->has_backdrop)
- {
- lcd_set_backdrop(&wps_backdrop[0][0]);
- }
- else
- {
- /* wps has no backdrop, so clear it in case we're switching wps */
- lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop);
- }
-
-#endif
+ show_wps_backdrop();
+#endif /* HAVE_LCD_COLOR */
#endif
#ifdef AB_REPEAT_ENABLE
@@ -241,12 +231,11 @@ long gui_wps_show(void)
case WPS_RC_CONTEXT:
#endif
#ifdef HAVE_LCD_COLOR
- lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop);
+ show_main_backdrop();
#endif
onplay(wps_state.id3->path, TREE_ATTR_MPA, CONTEXT_WPS);
#ifdef HAVE_LCD_COLOR
- if (gui_wps[SCREEN_MAIN].data->has_backdrop)
- lcd_set_backdrop(&wps_backdrop[0][0]);
+ show_wps_backdrop();
#endif
#ifdef HAVE_LCD_BITMAP
FOR_NB_SCREENS(i)
@@ -557,16 +546,12 @@ long gui_wps_show(void)
gui_wps[i].display->stop_scroll();
#ifdef HAVE_LCD_COLOR
- lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop);
+ show_main_backdrop();
#endif
if (main_menu())
return true;
#ifdef HAVE_LCD_COLOR
- if(global_settings.backdrop_file[0] == 0)
- gui_wps[SCREEN_MAIN].data->old_backdrop = NULL;
-
- if (gui_wps[SCREEN_MAIN].data->has_backdrop)
- lcd_set_backdrop(&wps_backdrop[0][0]);
+ show_wps_backdrop();
#endif
#ifdef HAVE_LCD_BITMAP
FOR_NB_SCREENS(i)
@@ -596,13 +581,12 @@ long gui_wps_show(void)
case WPS_RC_QUICK:
#endif
#ifdef HAVE_LCD_COLOR
- lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop);
+ show_main_backdrop();
#endif
if (quick_screen_quick(button))
return SYS_USB_CONNECTED;
#ifdef HAVE_LCD_COLOR
- if (gui_wps[SCREEN_MAIN].data->has_backdrop)
- lcd_set_backdrop(&wps_backdrop[0][0]);
+ show_wps_backdrop();
#endif
#ifdef HAVE_LCD_BITMAP
FOR_NB_SCREENS(i)
@@ -629,13 +613,12 @@ long gui_wps_show(void)
case BUTTON_ON | BUTTON_UP:
case BUTTON_ON | BUTTON_DOWN:
#ifdef HAVE_LCD_COLOR
- lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop);
+ show_main_backdrop();
#endif
if (1 == pitch_screen())
return SYS_USB_CONNECTED;
#ifdef HAVE_LCD_COLOR
- if (gui_wps[SCREEN_MAIN].data->has_backdrop)
- lcd_set_backdrop(&wps_backdrop[0][0]);
+ show_wps_backdrop();
#endif
restore = true;
break;
@@ -730,12 +713,11 @@ long gui_wps_show(void)
#ifdef WPS_ID3
case WPS_ID3:
#ifdef HAVE_LCD_COLOR
- lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop);
+ show_main_backdrop();
#endif
browse_id3();
#ifdef HAVE_LCD_COLOR
- if (gui_wps[SCREEN_MAIN].data->has_backdrop)
- lcd_set_backdrop(&wps_backdrop[0][0]);
+ show_wps_backdrop();
#endif
#ifdef HAVE_LCD_BITMAP
FOR_NB_SCREENS(i)
@@ -754,19 +736,14 @@ long gui_wps_show(void)
case SYS_POWEROFF:
bookmark_autobookmark();
#ifdef HAVE_LCD_COLOR
- lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop);
+ show_main_backdrop();
#endif
default_event_handler(SYS_POWEROFF);
break;
default:
if(default_event_handler(button) == SYS_USB_CONNECTED)
- {
-#ifdef HAVE_LCD_COLOR
- lcd_set_backdrop(gui_wps[SCREEN_MAIN].data->old_backdrop);
-#endif
return SYS_USB_CONNECTED;
- }
update_track = true;
break;
}
@@ -887,9 +864,6 @@ void wps_data_init(struct wps_data *wps_data)
wps_data->format_buffer[0] = '\0';
wps_data->wps_loaded = false;
wps_data->peak_meter_enabled = false;
-#ifdef HAVE_LCD_COLOR
- wps_data->has_backdrop = false;
-#endif
}
static void wps_reset(struct wps_data *data)
@@ -1075,4 +1049,7 @@ void gui_sync_wps_init(void)
gui_wps_set_data(&gui_wps[i], &wps_datas[i]);
gui_wps_set_statusbar(&gui_wps[i], &statusbars.statusbars[i]);
}
+#ifdef HAVE_LCD_COLOR
+ unload_wps_backdrop();
+#endif
}
diff --git a/apps/gui/gwps.h b/apps/gui/gwps.h
index 08299ac..3911ad1 100644
--- a/apps/gui/gwps.h
+++ b/apps/gui/gwps.h
@@ -367,10 +367,6 @@ struct wps_data
int progress_end;
bool wps_loaded;
bool peak_meter_enabled;
-#ifdef HAVE_LCD_COLOR
- bool has_backdrop;
- fb_data* old_backdrop;
-#endif
};
/* initial setup of wps_data */