summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/gui/gwps-common.c40
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 */
1198static void wps_display_images(struct gui_wps *gwps) 1198static 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}
1213static 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 }