summaryrefslogtreecommitdiff
path: root/apps/plugins/mpegplayer/mpeg_misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/mpegplayer/mpeg_misc.c')
-rw-r--r--apps/plugins/mpegplayer/mpeg_misc.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/apps/plugins/mpegplayer/mpeg_misc.c b/apps/plugins/mpegplayer/mpeg_misc.c
index e201aa69c7..d9e033322e 100644
--- a/apps/plugins/mpegplayer/mpeg_misc.c
+++ b/apps/plugins/mpegplayer/mpeg_misc.c
@@ -162,3 +162,58 @@ void list_enum_items(void **list,
162 list++; /* Item still there */ 162 list++; /* Item still there */
163 } 163 }
164} 164}
165
166
167/** System events **/
168static long mpeg_sysevent_id;
169
170void mpeg_sysevent_clear(void)
171{
172 mpeg_sysevent_id = 0;
173}
174
175void mpeg_sysevent_set(void)
176{
177 /* Nonzero and won't invoke anything in default event handler */
178 mpeg_sysevent_id = ACTION_STD_CANCEL;
179}
180
181long mpeg_sysevent(void)
182{
183 return mpeg_sysevent_id;
184}
185
186int mpeg_sysevent_callback(int btn, const struct menu_item_ex *menu)
187{
188 switch (btn)
189 {
190 case SYS_USB_CONNECTED:
191 case SYS_POWEROFF:
192 mpeg_sysevent_id = btn;
193 return ACTION_STD_CANCEL;
194 }
195
196 return btn;
197 (void)menu;
198}
199
200void mpeg_sysevent_handle(void)
201{
202 long id = mpeg_sysevent();
203 if (id != 0)
204 rb->default_event_handler(id);
205}
206
207
208/** Buttons **/
209
210int mpeg_button_get(int timeout)
211{
212 int button;
213
214 mpeg_sysevent_clear();
215 button = timeout == TIMEOUT_BLOCK ? rb->button_get(true) :
216 rb->button_get_w_tmo(timeout);
217 return mpeg_sysevent_callback(button, NULL);
218}
219