forked from len0rd/rockbox
MPEGPlayer: Some UI tweaking and bugfixing
* Allow skip-to-beginning in single-play mode; there is no 3-second delay in that case. * Properly handle and keep track of pauses caused by headphone removal. * Improve skipping over bad files - search in skip direction and allow it to be ended with the stop key. * Add the system message processing done elsewhere to all button queue waits. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28875 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
303aefc406
commit
9b4522bace
5 changed files with 358 additions and 220 deletions
|
@ -162,3 +162,58 @@ void list_enum_items(void **list,
|
|||
list++; /* Item still there */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** System events **/
|
||||
static long mpeg_sysevent_id;
|
||||
|
||||
void mpeg_sysevent_clear(void)
|
||||
{
|
||||
mpeg_sysevent_id = 0;
|
||||
}
|
||||
|
||||
void mpeg_sysevent_set(void)
|
||||
{
|
||||
/* Nonzero and won't invoke anything in default event handler */
|
||||
mpeg_sysevent_id = ACTION_STD_CANCEL;
|
||||
}
|
||||
|
||||
long mpeg_sysevent(void)
|
||||
{
|
||||
return mpeg_sysevent_id;
|
||||
}
|
||||
|
||||
int mpeg_sysevent_callback(int btn, const struct menu_item_ex *menu)
|
||||
{
|
||||
switch (btn)
|
||||
{
|
||||
case SYS_USB_CONNECTED:
|
||||
case SYS_POWEROFF:
|
||||
mpeg_sysevent_id = btn;
|
||||
return ACTION_STD_CANCEL;
|
||||
}
|
||||
|
||||
return btn;
|
||||
(void)menu;
|
||||
}
|
||||
|
||||
void mpeg_sysevent_handle(void)
|
||||
{
|
||||
long id = mpeg_sysevent();
|
||||
if (id != 0)
|
||||
rb->default_event_handler(id);
|
||||
}
|
||||
|
||||
|
||||
/** Buttons **/
|
||||
|
||||
int mpeg_button_get(int timeout)
|
||||
{
|
||||
int button;
|
||||
|
||||
mpeg_sysevent_clear();
|
||||
button = timeout == TIMEOUT_BLOCK ? rb->button_get(true) :
|
||||
rb->button_get_w_tmo(timeout);
|
||||
return mpeg_sysevent_callback(button, NULL);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue