summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2024-06-19 14:19:11 -0400
committerWilliam Wilgus <me.theuser@yahoo.com>2024-06-19 14:28:28 -0400
commit204551444efa762a54e3ef4a26eaea117eccb832 (patch)
treee0dfd917b09aca7aa9681c10800401f0eca57ef7
parent6f4d0b7eb1bcfc84a5092bb082470f46bfb9a5a9 (diff)
downloadrockbox-204551444efa762a54e3ef4a26eaea117eccb832.tar.gz
rockbox-204551444efa762a54e3ef4a26eaea117eccb832.zip
[Cleanup] viewport.c
hopefully the order of the events enable / disable don't matter as far as I can tell it doesn't Change-Id: Ia6bbe83ede788712e67aae6599585d6f79bfbcdc
-rw-r--r--apps/gui/viewport.c64
1 files changed, 25 insertions, 39 deletions
diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c
index e90426a132..cf81f7d009 100644
--- a/apps/gui/viewport.c
+++ b/apps/gui/viewport.c
@@ -72,30 +72,35 @@ static int theme_stack_top[NB_SCREENS]; /* the last item added */
72static struct viewport_stack_item theme_stack[NB_SCREENS][VPSTACK_DEPTH]; 72static struct viewport_stack_item theme_stack[NB_SCREENS][VPSTACK_DEPTH];
73static bool is_theme_enabled(enum screen_type screen); 73static bool is_theme_enabled(enum screen_type screen);
74 74
75static void evt_toggle(bool enable, unsigned short id,
76 void (*handler)(unsigned short id, void *data))
77{
78 if (enable)
79 add_event(id, handler);
80 else
81 remove_event(id, handler);
82}
75 83
76static void toggle_events(bool enable) 84static void toggle_events(bool enable)
77{ 85{
78 if (enable) 86 evt_toggle(enable, GUI_EVENT_ACTIONUPDATE, viewportmanager_redraw);
79 { 87 evt_toggle(enable, PLAYBACK_EVENT_TRACK_CHANGE, do_sbs_update_callback);
80 add_event(GUI_EVENT_ACTIONUPDATE, viewportmanager_redraw); 88 evt_toggle(enable, PLAYBACK_EVENT_NEXTTRACKID3_AVAILABLE, do_sbs_update_callback);
81#if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP) 89#if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP)
82 add_event(LCD_EVENT_ACTIVATION, do_sbs_update_callback); 90 evt_toggle(enable, LCD_EVENT_ACTIVATION, do_sbs_update_callback);
83#endif 91#endif
84 add_event(PLAYBACK_EVENT_TRACK_CHANGE, do_sbs_update_callback); 92}
85 add_event(PLAYBACK_EVENT_NEXTTRACKID3_AVAILABLE, do_sbs_update_callback); 93
86 } 94static void set_clear_update_valid_vp(enum screen_type screen, struct viewport *vp)
87 else 95{
96 if (vp->width && vp->height)
88 { 97 {
89#if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP) 98 screens[screen].set_viewport(vp);
90 remove_event(LCD_EVENT_ACTIVATION, do_sbs_update_callback); 99 screens[screen].clear_viewport();
91#endif 100 screens[screen].update_viewport();
92 remove_event(PLAYBACK_EVENT_TRACK_CHANGE, do_sbs_update_callback);
93 remove_event(PLAYBACK_EVENT_NEXTTRACKID3_AVAILABLE, do_sbs_update_callback);
94 remove_event(GUI_EVENT_ACTIONUPDATE, viewportmanager_redraw);
95 } 101 }
96} 102}
97 103
98
99static void toggle_theme(enum screen_type screen, bool force) 104static void toggle_theme(enum screen_type screen, bool force)
100{ 105{
101 bool enable_event = false; 106 bool enable_event = false;
@@ -129,41 +134,22 @@ static void toggle_theme(enum screen_type screen, bool force)
129 deadspace.y = 0; 134 deadspace.y = 0;
130 deadspace.width = screens[screen].lcdwidth; 135 deadspace.width = screens[screen].lcdwidth;
131 deadspace.height = user.y; 136 deadspace.height = user.y;
132 if (deadspace.width && deadspace.height) 137 set_clear_update_valid_vp(screen, &deadspace);
133 {
134 screens[screen].set_viewport(&deadspace);
135 screens[screen].clear_viewport();
136 screens[screen].update_viewport();
137 }
138 /* below */ 138 /* below */
139 deadspace.y = user.y + user.height; 139 deadspace.y = user.y + user.height;
140 deadspace.height = screens[screen].lcdheight - deadspace.y; 140 deadspace.height = screens[screen].lcdheight - deadspace.y;
141 if (deadspace.width && deadspace.height) 141 set_clear_update_valid_vp(screen, &deadspace);
142 {
143 screens[screen].set_viewport(&deadspace);
144 screens[screen].clear_viewport();
145 screens[screen].update_viewport();
146 }
147 /* left */ 142 /* left */
148 deadspace.x = 0; 143 deadspace.x = 0;
149 deadspace.y = 0; 144 deadspace.y = 0;
150 deadspace.width = user.x; 145 deadspace.width = user.x;
151 deadspace.height = screens[screen].lcdheight; 146 deadspace.height = screens[screen].lcdheight;
152 if (deadspace.width && deadspace.height) 147 set_clear_update_valid_vp(screen, &deadspace);
153 {
154 screens[screen].set_viewport(&deadspace);
155 screens[screen].clear_viewport();
156 screens[screen].update_viewport();
157 }
158 /* below */ 148 /* below */
159 deadspace.x = user.x + user.width; 149 deadspace.x = user.x + user.width;
160 deadspace.width = screens[screen].lcdwidth - deadspace.x; 150 deadspace.width = screens[screen].lcdwidth - deadspace.x;
161 if (deadspace.width && deadspace.height) 151 set_clear_update_valid_vp(screen, &deadspace);
162 { 152
163 screens[screen].set_viewport(&deadspace);
164 screens[screen].clear_viewport();
165 screens[screen].update_viewport();
166 }
167 screens[screen].set_viewport(last_vp); 153 screens[screen].set_viewport(last_vp);
168 } 154 }
169 intptr_t force = first_boot?0:1; 155 intptr_t force = first_boot?0:1;