summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/gui/list.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/apps/gui/list.c b/apps/gui/list.c
index 7fe06f9aad..ca3ae02bbd 100644
--- a/apps/gui/list.c
+++ b/apps/gui/list.c
@@ -61,6 +61,11 @@ void list_draw(struct screen *display, struct gui_synclist *list);
61static long last_dirty_tick; 61static long last_dirty_tick;
62static struct viewport parent[NB_SCREENS]; 62static struct viewport parent[NB_SCREENS];
63 63
64static bool list_is_dirty(struct gui_synclist *list)
65{
66 return TIME_BEFORE(list->dirty_tick, last_dirty_tick);
67}
68
64static void list_force_reinit(void *param) 69static void list_force_reinit(void *param)
65{ 70{
66 (void)param; 71 (void)param;
@@ -109,6 +114,7 @@ static struct viewport parent[NB_SCREENS] =
109}; 114};
110 115
111#define list_init_viewports(a) 116#define list_init_viewports(a)
117#define list_is_dirty(a) false
112#endif 118#endif
113 119
114#ifdef HAVE_LCD_BITMAP 120#ifdef HAVE_LCD_BITMAP
@@ -229,24 +235,17 @@ int gui_list_get_item_offset(struct gui_synclist * gui_list,
229} 235}
230#endif 236#endif
231 237
232static bool is_dirty(struct gui_synclist *list)
233{
234 return TIME_BEFORE(list->dirty_tick, last_dirty_tick);
235}
236
237/* 238/*
238 * Force a full screen update. 239 * Force a full screen update.
239 */ 240 */
240void gui_synclist_draw(struct gui_synclist *gui_list) 241void gui_synclist_draw(struct gui_synclist *gui_list)
241{ 242{
242 int i; 243 int i;
243#ifdef HAVE_LCD_BITMAP 244 if (list_is_dirty(gui_list))
244 if (is_dirty(gui_list))
245 { 245 {
246 list_init_viewports(gui_list); 246 list_init_viewports(gui_list);
247 gui_synclist_select_item(gui_list, gui_list->selected_item); 247 gui_synclist_select_item(gui_list, gui_list->selected_item);
248 } 248 }
249#endif
250 FOR_NB_SCREENS(i) 249 FOR_NB_SCREENS(i)
251 { 250 {
252#ifdef HAVE_LCD_BITMAP 251#ifdef HAVE_LCD_BITMAP