diff options
Diffstat (limited to 'apps/plugins/mpegplayer/mpeg_misc.c')
-rw-r--r-- | apps/plugins/mpegplayer/mpeg_misc.c | 55 |
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 **/ | ||
168 | static long mpeg_sysevent_id; | ||
169 | |||
170 | void mpeg_sysevent_clear(void) | ||
171 | { | ||
172 | mpeg_sysevent_id = 0; | ||
173 | } | ||
174 | |||
175 | void 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 | |||
181 | long mpeg_sysevent(void) | ||
182 | { | ||
183 | return mpeg_sysevent_id; | ||
184 | } | ||
185 | |||
186 | int 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 | |||
200 | void 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 | |||
210 | int 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 | |||