1
0
Fork 0
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:
Michael Sevakis 2010-12-22 11:20:07 +00:00
parent 303aefc406
commit 9b4522bace
5 changed files with 358 additions and 220 deletions

View file

@ -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);
}