1
0
Fork 0
forked from len0rd/rockbox

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
This commit is contained in:
Nicolas Pennequin 2007-04-25 13:09:56 +00:00
parent 70e2846241
commit 2a2b8d8a82
5 changed files with 40 additions and 15 deletions

View file

@ -741,6 +741,9 @@ void gui_sync_wps_init(void)
FOR_NB_SCREENS(i)
{
wps_data_init(&wps_datas[i]);
#ifdef HAVE_REMOTE_LCD
wps_datas[i].remote_wps = (i != 0);
#endif
gui_wps_init(&gui_wps[i]);
gui_wps_set_data(&gui_wps[i], &wps_datas[i]);
gui_wps_set_statusbar(&gui_wps[i], &statusbars.statusbars[i]);

View file

@ -312,6 +312,11 @@ struct wps_data
unsigned short wps_progress_pat[8];
bool full_line_progressbar;
#endif
#ifdef HAVE_REMOTE_LCD
bool remote_wps;
#endif
/* Number of lines in the WPS. During WPS parsing, this is
the index of the line being parsed. */
int num_lines;

View file

@ -311,9 +311,17 @@ static bool load_bitmap(struct wps_data *wps_data,
char* filename,
struct bitmap *bm)
{
int format;
#ifdef HAVE_REMOTE_LCD
if (wps_data->remote_wps)
format = FORMAT_ANY|FORMAT_REMOTE;
else
#endif
format = FORMAT_ANY|FORMAT_TRANSPARENT;
int ret = read_bmp_file(filename, bm,
wps_data->img_buf_free,
FORMAT_ANY|FORMAT_TRANSPARENT);
format);
if (ret > 0)
{
@ -840,9 +848,14 @@ void wps_data_init(struct wps_data *wps_data)
static void wps_reset(struct wps_data *data)
{
#ifdef HAVE_REMOTE_LCD
bool rwps = data->remote_wps; /* remember whether the data is for a RWPS */
#endif
memset(data, 0, sizeof(*data));
data->wps_loaded = false;
wps_data_init(data);
#ifdef HAVE_REMOTE_LCD
data->remote_wps = rwps;
#endif
}
#ifdef HAVE_LCD_BITMAP
@ -896,12 +909,15 @@ static void load_wps_bitmaps(struct wps_data *wps_data, char *bmpdir)
}
#if LCD_DEPTH > 1
if (backdrop_bmp_name)
{
get_image_filename(backdrop_bmp_name, bmpdir,
img_path, sizeof(img_path));
load_wps_backdrop(img_path);
}
#ifdef HAVE_REMOTE_LCD
if (!wps_data->remote_wps)
#endif
if (backdrop_bmp_name)
{
get_image_filename(backdrop_bmp_name, bmpdir,
img_path, sizeof(img_path));
load_wps_backdrop(img_path);
}
#endif
}

View file

@ -26,13 +26,8 @@
static fb_data main_backdrop[LCD_HEIGHT][LCD_WIDTH] __attribute__ ((aligned (16)));
static fb_data wps_backdrop[LCD_HEIGHT][LCD_WIDTH] __attribute__ ((aligned (16)));
#elif LCD_DEPTH == 2
#if LCD_PIXELFORMAT == VERTICAL_PACKING
static fb_data main_backdrop[(LCD_HEIGHT+3)/4][LCD_WIDTH];
static fb_data wps_backdrop[(LCD_HEIGHT+3)/4][LCD_WIDTH];
#else
static fb_data main_backdrop[LCD_HEIGHT][LCD_FBWIDTH];
static fb_data wps_backdrop[LCD_HEIGHT][LCD_FBWIDTH];
#endif
static fb_data main_backdrop[LCD_FBHEIGHT][LCD_FBWIDTH];
static fb_data wps_backdrop[LCD_FBHEIGHT][LCD_FBWIDTH];
#endif
static bool main_backdrop_valid = false;

View file

@ -751,6 +751,9 @@ void settings_apply(void)
else
{
wps_data_init(gui_wps[0].data);
#ifdef HAVE_REMOTE_LCD
gui_wps[0].data->remote_wps = false;
#endif
}
#if LCD_DEPTH > 1
@ -777,7 +780,10 @@ void settings_apply(void)
wps_data_load(gui_wps[1].data, buf, true);
}
else
{
wps_data_init(gui_wps[1].data);
gui_wps[1].data->remote_wps = true;
}
#endif
#ifdef HAVE_LCD_BITMAP