forked from len0rd/rockbox
Patch #1377894 by Stephan Wezel - less image flickering in WPS
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8217 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
790b365595
commit
4b32ec718d
1 changed files with 22 additions and 18 deletions
|
|
@ -1195,14 +1195,10 @@ void gui_wps_format(struct wps_data *data)
|
||||||
|
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
/* Display images */
|
/* Display images */
|
||||||
static void wps_display_images(struct gui_wps *gwps)
|
static void wps_draw_image(struct gui_wps *gwps, int n)
|
||||||
{
|
{
|
||||||
if(!gwps || !gwps->data || !gwps->display) return;
|
|
||||||
int n;
|
|
||||||
struct wps_data *data = gwps->data;
|
|
||||||
struct screen *display = gwps->display;
|
struct screen *display = gwps->display;
|
||||||
for (n = 0; n < MAX_IMAGES; n++) {
|
struct wps_data *data = gwps->data;
|
||||||
if (data->img[n].loaded && data->img[n].display) {
|
|
||||||
if(data->img[n].always_display)
|
if(data->img[n].always_display)
|
||||||
display->set_drawmode(DRMODE_FG);
|
display->set_drawmode(DRMODE_FG);
|
||||||
else
|
else
|
||||||
|
|
@ -1214,6 +1210,18 @@ static void wps_display_images(struct gui_wps *gwps)
|
||||||
display->update_rect(data->img[n].x, data->img[n].y,
|
display->update_rect(data->img[n].x, data->img[n].y,
|
||||||
data->img[n].w, data->img[n].h);
|
data->img[n].w, data->img[n].h);
|
||||||
}
|
}
|
||||||
|
static void wps_display_images(struct gui_wps *gwps, bool always)
|
||||||
|
{
|
||||||
|
if(!gwps || !gwps->data || !gwps->display) return;
|
||||||
|
int n;
|
||||||
|
struct wps_data *data = gwps->data;
|
||||||
|
struct screen *display = gwps->display;
|
||||||
|
for (n = 0; n < MAX_IMAGES; n++) {
|
||||||
|
if (data->img[n].loaded) {
|
||||||
|
if( (!always && data->img[n].display)
|
||||||
|
|| (always && data->img[n].always_display) )
|
||||||
|
wps_draw_image(gwps, n);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
display->set_drawmode(DRMODE_SOLID);
|
display->set_drawmode(DRMODE_SOLID);
|
||||||
}
|
}
|
||||||
|
|
@ -1645,6 +1653,7 @@ bool gui_wps_refresh(struct gui_wps *gwps, int ffwd_offset,
|
||||||
}
|
}
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
if (update_line) {
|
if (update_line) {
|
||||||
|
wps_display_images(gwps,false);
|
||||||
display->update_rect(0, i*h + offset, display->width, h);
|
display->update_rect(0, i*h + offset, display->width, h);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1652,11 +1661,7 @@ bool gui_wps_refresh(struct gui_wps *gwps, int ffwd_offset,
|
||||||
|
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
/* Display all images */
|
/* Display all images */
|
||||||
for (i = 0; i < MAX_IMAGES; i++) {
|
wps_display_images(gwps,true);
|
||||||
if(data->img[i].always_display)
|
|
||||||
data->img[i].display = data->img[i].always_display;
|
|
||||||
}
|
|
||||||
wps_display_images(gwps);
|
|
||||||
|
|
||||||
/* Now we know wether the peak meter is used.
|
/* Now we know wether the peak meter is used.
|
||||||
So we can enable / disable the peak meter thread */
|
So we can enable / disable the peak meter thread */
|
||||||
|
|
@ -2112,7 +2117,6 @@ bool gui_wps_display(void)
|
||||||
gui_wps_refresh(&gui_wps[i], 0, WPS_REFRESH_ALL);
|
gui_wps_refresh(&gui_wps[i], 0, WPS_REFRESH_ALL);
|
||||||
|
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
wps_display_images(&gui_wps[i]);
|
|
||||||
gui_wps[i].display->update();
|
gui_wps[i].display->update();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue