summaryrefslogtreecommitdiff
path: root/apps/gui/viewport.c
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2014-03-14 23:15:16 +0100
committerThomas Martitz <kugel@rockbox.org>2014-03-14 23:36:30 +0100
commit470989bd708d9a425dbbf2d83b8fcbd0a8d0f488 (patch)
treef3bef37bc0f8ff7da4beddad9903209ced1bc25a /apps/gui/viewport.c
parent50f0dd80d660b332a1739e07a630c2cef1b678c6 (diff)
downloadrockbox-470989bd708d9a425dbbf2d83b8fcbd0a8d0f488.tar.gz
rockbox-470989bd708d9a425dbbf2d83b8fcbd0a8d0f488.zip
events: Rework event subsystem (add_event, send_event) to be more versatile.
add_event_ex is added that takes an extra user_data pointer. This pointer is passed to the callback (add_event and add_event_ex have slightly different callbacks types). All callbacks also get the event id passed. Events added with add_event_ex must be removed with remove_event_ex because the user_data pointer must match in addition to the callback pointer. On the other add_event is simplified to omit the oneshort parameter which was almost always false (still there with add_event_ex). As a side effect the ata_idle_notify callbacks are changed as well, they do not take a data parameter anymore which was always NULL anyway. This commit also adds some documentation to events.h Change-Id: I13e29a0f88ef908f175b376d83550f9e0231f772
Diffstat (limited to 'apps/gui/viewport.c')
-rw-r--r--apps/gui/viewport.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c
index aeb884a95d..194954c1d2 100644
--- a/apps/gui/viewport.c
+++ b/apps/gui/viewport.c
@@ -69,7 +69,7 @@ struct viewport_stack_item
69}; 69};
70 70
71#ifdef HAVE_LCD_BITMAP 71#ifdef HAVE_LCD_BITMAP
72static void viewportmanager_redraw(void* data); 72static void viewportmanager_redraw(unsigned short id, void* data);
73 73
74static int theme_stack_top[NB_SCREENS]; /* the last item added */ 74static int theme_stack_top[NB_SCREENS]; /* the last item added */
75static struct viewport_stack_item theme_stack[NB_SCREENS][VPSTACK_DEPTH]; 75static struct viewport_stack_item theme_stack[NB_SCREENS][VPSTACK_DEPTH];
@@ -80,14 +80,12 @@ static void toggle_events(bool enable)
80{ 80{
81 if (enable) 81 if (enable)
82 { 82 {
83 add_event(GUI_EVENT_ACTIONUPDATE, false, viewportmanager_redraw); 83 add_event(GUI_EVENT_ACTIONUPDATE, viewportmanager_redraw);
84#if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP) 84#if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP)
85 add_event(LCD_EVENT_ACTIVATION, false, do_sbs_update_callback); 85 add_event(LCD_EVENT_ACTIVATION, do_sbs_update_callback);
86#endif 86#endif
87 add_event(PLAYBACK_EVENT_TRACK_CHANGE, false, 87 add_event(PLAYBACK_EVENT_TRACK_CHANGE, do_sbs_update_callback);
88 do_sbs_update_callback); 88 add_event(PLAYBACK_EVENT_NEXTTRACKID3_AVAILABLE, do_sbs_update_callback);
89 add_event(PLAYBACK_EVENT_NEXTTRACKID3_AVAILABLE, false,
90 do_sbs_update_callback);
91 } 89 }
92 else 90 else
93 { 91 {
@@ -232,8 +230,9 @@ int viewport_get_nb_lines(const struct viewport *vp)
232#endif 230#endif
233} 231}
234 232
235static void viewportmanager_redraw(void* data) 233static void viewportmanager_redraw(unsigned short id, void* data)
236{ 234{
235 (void)id;
237 FOR_NB_SCREENS(i) 236 FOR_NB_SCREENS(i)
238 { 237 {
239#ifdef HAVE_LCD_BITMAP 238#ifdef HAVE_LCD_BITMAP
@@ -256,7 +255,7 @@ void viewportmanager_init()
256 viewportmanager_theme_enable(i, true, NULL); 255 viewportmanager_theme_enable(i, true, NULL);
257 } 256 }
258#else 257#else
259 add_event(GUI_EVENT_ACTIONUPDATE, false, viewportmanager_redraw); 258 add_event(GUI_EVENT_ACTIONUPDATE, viewportmanager_redraw);
260#endif 259#endif
261} 260}
262 261