summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorNicolas Pennequin <nicolas.pennequin@free.fr>2007-04-25 13:09:56 +0000
committerNicolas Pennequin <nicolas.pennequin@free.fr>2007-04-25 13:09:56 +0000
commit2a2b8d8a8234633779dca0fff5e7ce23ad4c48ed (patch)
treee6ffe49977691b83484dc66e67eac51e50ff85d3 /apps
parent70e2846241a8ab9dd6aa570762086c3111ac0463 (diff)
downloadrockbox-2a2b8d8a8234633779dca0fff5e7ce23ad4c48ed.tar.gz
rockbox-2a2b8d8a8234633779dca0fff5e7ce23ad4c48ed.zip
Make bitmaps use the right format in a RWPS and prevent a backdrop tag in a RWPS from clearing the main display's backdrop. This also allows future backdrop support for LCD remotes by making the parsing code aware of whether the display for a WPS is a remote or not.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13261 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/gui/gwps.c3
-rw-r--r--apps/gui/gwps.h5
-rw-r--r--apps/gui/wps_parser.c32
-rw-r--r--apps/recorder/backdrop.c9
-rw-r--r--apps/settings.c6
5 files changed, 40 insertions, 15 deletions
diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c
index 5d91de2285..e46f804af8 100644
--- a/apps/gui/gwps.c
+++ b/apps/gui/gwps.c
@@ -741,6 +741,9 @@ void gui_sync_wps_init(void)
741 FOR_NB_SCREENS(i) 741 FOR_NB_SCREENS(i)
742 { 742 {
743 wps_data_init(&wps_datas[i]); 743 wps_data_init(&wps_datas[i]);
744#ifdef HAVE_REMOTE_LCD
745 wps_datas[i].remote_wps = (i != 0);
746#endif
744 gui_wps_init(&gui_wps[i]); 747 gui_wps_init(&gui_wps[i]);
745 gui_wps_set_data(&gui_wps[i], &wps_datas[i]); 748 gui_wps_set_data(&gui_wps[i], &wps_datas[i]);
746 gui_wps_set_statusbar(&gui_wps[i], &statusbars.statusbars[i]); 749 gui_wps_set_statusbar(&gui_wps[i], &statusbars.statusbars[i]);
diff --git a/apps/gui/gwps.h b/apps/gui/gwps.h
index 7d82179da8..5fa2acfea9 100644
--- a/apps/gui/gwps.h
+++ b/apps/gui/gwps.h
@@ -312,6 +312,11 @@ struct wps_data
312 unsigned short wps_progress_pat[8]; 312 unsigned short wps_progress_pat[8];
313 bool full_line_progressbar; 313 bool full_line_progressbar;
314#endif 314#endif
315
316#ifdef HAVE_REMOTE_LCD
317 bool remote_wps;
318#endif
319
315 /* Number of lines in the WPS. During WPS parsing, this is 320 /* Number of lines in the WPS. During WPS parsing, this is
316 the index of the line being parsed. */ 321 the index of the line being parsed. */
317 int num_lines; 322 int num_lines;
diff --git a/apps/gui/wps_parser.c b/apps/gui/wps_parser.c
index ec98d95ee4..b6cda91e74 100644
--- a/apps/gui/wps_parser.c
+++ b/apps/gui/wps_parser.c
@@ -311,9 +311,17 @@ static bool load_bitmap(struct wps_data *wps_data,
311 char* filename, 311 char* filename,
312 struct bitmap *bm) 312 struct bitmap *bm)
313{ 313{
314 int format;
315#ifdef HAVE_REMOTE_LCD
316 if (wps_data->remote_wps)
317 format = FORMAT_ANY|FORMAT_REMOTE;
318 else
319#endif
320 format = FORMAT_ANY|FORMAT_TRANSPARENT;
321
314 int ret = read_bmp_file(filename, bm, 322 int ret = read_bmp_file(filename, bm,
315 wps_data->img_buf_free, 323 wps_data->img_buf_free,
316 FORMAT_ANY|FORMAT_TRANSPARENT); 324 format);
317 325
318 if (ret > 0) 326 if (ret > 0)
319 { 327 {
@@ -840,9 +848,14 @@ void wps_data_init(struct wps_data *wps_data)
840 848
841static void wps_reset(struct wps_data *data) 849static void wps_reset(struct wps_data *data)
842{ 850{
851#ifdef HAVE_REMOTE_LCD
852 bool rwps = data->remote_wps; /* remember whether the data is for a RWPS */
853#endif
843 memset(data, 0, sizeof(*data)); 854 memset(data, 0, sizeof(*data));
844 data->wps_loaded = false;
845 wps_data_init(data); 855 wps_data_init(data);
856#ifdef HAVE_REMOTE_LCD
857 data->remote_wps = rwps;
858#endif
846} 859}
847 860
848#ifdef HAVE_LCD_BITMAP 861#ifdef HAVE_LCD_BITMAP
@@ -896,12 +909,15 @@ static void load_wps_bitmaps(struct wps_data *wps_data, char *bmpdir)
896 } 909 }
897 910
898#if LCD_DEPTH > 1 911#if LCD_DEPTH > 1
899 if (backdrop_bmp_name) 912#ifdef HAVE_REMOTE_LCD
900 { 913 if (!wps_data->remote_wps)
901 get_image_filename(backdrop_bmp_name, bmpdir, 914#endif
902 img_path, sizeof(img_path)); 915 if (backdrop_bmp_name)
903 load_wps_backdrop(img_path); 916 {
904 } 917 get_image_filename(backdrop_bmp_name, bmpdir,
918 img_path, sizeof(img_path));
919 load_wps_backdrop(img_path);
920 }
905#endif 921#endif
906} 922}
907 923
diff --git a/apps/recorder/backdrop.c b/apps/recorder/backdrop.c
index cb6aaa5a32..e31543549d 100644
--- a/apps/recorder/backdrop.c
+++ b/apps/recorder/backdrop.c
@@ -26,13 +26,8 @@
26static fb_data main_backdrop[LCD_HEIGHT][LCD_WIDTH] __attribute__ ((aligned (16))); 26static fb_data main_backdrop[LCD_HEIGHT][LCD_WIDTH] __attribute__ ((aligned (16)));
27static fb_data wps_backdrop[LCD_HEIGHT][LCD_WIDTH] __attribute__ ((aligned (16))); 27static fb_data wps_backdrop[LCD_HEIGHT][LCD_WIDTH] __attribute__ ((aligned (16)));
28#elif LCD_DEPTH == 2 28#elif LCD_DEPTH == 2
29#if LCD_PIXELFORMAT == VERTICAL_PACKING 29static fb_data main_backdrop[LCD_FBHEIGHT][LCD_FBWIDTH];
30static fb_data main_backdrop[(LCD_HEIGHT+3)/4][LCD_WIDTH]; 30static fb_data wps_backdrop[LCD_FBHEIGHT][LCD_FBWIDTH];
31static fb_data wps_backdrop[(LCD_HEIGHT+3)/4][LCD_WIDTH];
32#else
33static fb_data main_backdrop[LCD_HEIGHT][LCD_FBWIDTH];
34static fb_data wps_backdrop[LCD_HEIGHT][LCD_FBWIDTH];
35#endif
36#endif 31#endif
37 32
38static bool main_backdrop_valid = false; 33static bool main_backdrop_valid = false;
diff --git a/apps/settings.c b/apps/settings.c
index 537ca9f5b6..52af7cb481 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -751,6 +751,9 @@ void settings_apply(void)
751 else 751 else
752 { 752 {
753 wps_data_init(gui_wps[0].data); 753 wps_data_init(gui_wps[0].data);
754#ifdef HAVE_REMOTE_LCD
755 gui_wps[0].data->remote_wps = false;
756#endif
754 } 757 }
755 758
756#if LCD_DEPTH > 1 759#if LCD_DEPTH > 1
@@ -777,7 +780,10 @@ void settings_apply(void)
777 wps_data_load(gui_wps[1].data, buf, true); 780 wps_data_load(gui_wps[1].data, buf, true);
778 } 781 }
779 else 782 else
783 {
780 wps_data_init(gui_wps[1].data); 784 wps_data_init(gui_wps[1].data);
785 gui_wps[1].data->remote_wps = true;
786 }
781#endif 787#endif
782 788
783#ifdef HAVE_LCD_BITMAP 789#ifdef HAVE_LCD_BITMAP