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:
parent
70e2846241
commit
2a2b8d8a82
5 changed files with 40 additions and 15 deletions
|
|
@ -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]);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue