diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2005-12-11 00:48:26 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2005-12-11 00:48:26 +0000 |
commit | 4b32ec718dc7bda11c803f889d5c86350b871cfa (patch) | |
tree | 4ae4fcc241d312ee6956baa79111a35501b0a226 /apps/gui | |
parent | 790b365595ce0e3407777b9ff37494ec7fe7db0f (diff) | |
download | rockbox-4b32ec718dc7bda11c803f889d5c86350b871cfa.tar.gz rockbox-4b32ec718dc7bda11c803f889d5c86350b871cfa.zip |
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
Diffstat (limited to 'apps/gui')
-rw-r--r-- | apps/gui/gwps-common.c | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c index 87c6a9ce63..fb71ab8cbf 100644 --- a/apps/gui/gwps-common.c +++ b/apps/gui/gwps-common.c | |||
@@ -1195,24 +1195,32 @@ void gui_wps_format(struct wps_data *data) | |||
1195 | 1195 | ||
1196 | #ifdef HAVE_LCD_BITMAP | 1196 | #ifdef HAVE_LCD_BITMAP |
1197 | /* Display images */ | 1197 | /* Display images */ |
1198 | static void wps_display_images(struct gui_wps *gwps) | 1198 | static void wps_draw_image(struct gui_wps *gwps, int n) |
1199 | { | ||
1200 | struct screen *display = gwps->display; | ||
1201 | struct wps_data *data = gwps->data; | ||
1202 | if(data->img[n].always_display) | ||
1203 | display->set_drawmode(DRMODE_FG); | ||
1204 | else | ||
1205 | display->set_drawmode(DRMODE_SOLID); | ||
1206 | |||
1207 | display->mono_bitmap(data->img[n].ptr, data->img[n].x, | ||
1208 | data->img[n].y, data->img[n].w, | ||
1209 | data->img[n].h); | ||
1210 | display->update_rect(data->img[n].x, data->img[n].y, | ||
1211 | data->img[n].w, data->img[n].h); | ||
1212 | } | ||
1213 | static void wps_display_images(struct gui_wps *gwps, bool always) | ||
1199 | { | 1214 | { |
1200 | if(!gwps || !gwps->data || !gwps->display) return; | 1215 | if(!gwps || !gwps->data || !gwps->display) return; |
1201 | int n; | 1216 | int n; |
1202 | struct wps_data *data = gwps->data; | 1217 | struct wps_data *data = gwps->data; |
1203 | struct screen *display = gwps->display; | 1218 | struct screen *display = gwps->display; |
1204 | for (n = 0; n < MAX_IMAGES; n++) { | 1219 | for (n = 0; n < MAX_IMAGES; n++) { |
1205 | if (data->img[n].loaded && data->img[n].display) { | 1220 | if (data->img[n].loaded) { |
1206 | if(data->img[n].always_display) | 1221 | if( (!always && data->img[n].display) |
1207 | display->set_drawmode(DRMODE_FG); | 1222 | || (always && data->img[n].always_display) ) |
1208 | else | 1223 | wps_draw_image(gwps, n); |
1209 | display->set_drawmode(DRMODE_SOLID); | ||
1210 | |||
1211 | display->mono_bitmap(data->img[n].ptr, data->img[n].x, | ||
1212 | data->img[n].y, data->img[n].w, | ||
1213 | data->img[n].h); | ||
1214 | display->update_rect(data->img[n].x, data->img[n].y, | ||
1215 | data->img[n].w, data->img[n].h); | ||
1216 | } | 1224 | } |
1217 | } | 1225 | } |
1218 | display->set_drawmode(DRMODE_SOLID); | 1226 | display->set_drawmode(DRMODE_SOLID); |
@@ -1645,6 +1653,7 @@ bool gui_wps_refresh(struct gui_wps *gwps, int ffwd_offset, | |||
1645 | } | 1653 | } |
1646 | #ifdef HAVE_LCD_BITMAP | 1654 | #ifdef HAVE_LCD_BITMAP |
1647 | if (update_line) { | 1655 | if (update_line) { |
1656 | wps_display_images(gwps,false); | ||
1648 | display->update_rect(0, i*h + offset, display->width, h); | 1657 | display->update_rect(0, i*h + offset, display->width, h); |
1649 | } | 1658 | } |
1650 | #endif | 1659 | #endif |
@@ -1652,11 +1661,7 @@ bool gui_wps_refresh(struct gui_wps *gwps, int ffwd_offset, | |||
1652 | 1661 | ||
1653 | #ifdef HAVE_LCD_BITMAP | 1662 | #ifdef HAVE_LCD_BITMAP |
1654 | /* Display all images */ | 1663 | /* Display all images */ |
1655 | for (i = 0; i < MAX_IMAGES; i++) { | 1664 | wps_display_images(gwps,true); |
1656 | if(data->img[i].always_display) | ||
1657 | data->img[i].display = data->img[i].always_display; | ||
1658 | } | ||
1659 | wps_display_images(gwps); | ||
1660 | 1665 | ||
1661 | /* Now we know wether the peak meter is used. | 1666 | /* Now we know wether the peak meter is used. |
1662 | So we can enable / disable the peak meter thread */ | 1667 | So we can enable / disable the peak meter thread */ |
@@ -2112,7 +2117,6 @@ bool gui_wps_display(void) | |||
2112 | gui_wps_refresh(&gui_wps[i], 0, WPS_REFRESH_ALL); | 2117 | gui_wps_refresh(&gui_wps[i], 0, WPS_REFRESH_ALL); |
2113 | 2118 | ||
2114 | #ifdef HAVE_LCD_BITMAP | 2119 | #ifdef HAVE_LCD_BITMAP |
2115 | wps_display_images(&gui_wps[i]); | ||
2116 | gui_wps[i].display->update(); | 2120 | gui_wps[i].display->update(); |
2117 | #endif | 2121 | #endif |
2118 | } | 2122 | } |