forked from len0rd/rockbox
Add support multimedia keys/buttons to the core, and adapt Rockbox on android for it (multimedia buttons are found on wired headsets and the lock screen in cyanogenmod).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28421 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
dbe2ac1ec6
commit
49f1ec8e8a
13 changed files with 300 additions and 17 deletions
|
@ -183,8 +183,9 @@ static int get_action_worker(int context, int timeout,
|
|||
else
|
||||
button = button_get_w_tmo(timeout);
|
||||
|
||||
/* Data from sys events can be pulled with button_get_data */
|
||||
if (button == BUTTON_NONE || button & SYS_EVENT)
|
||||
/* Data from sys events can be pulled with button_get_data
|
||||
* multimedia button presses don't go through the action system */
|
||||
if (button == BUTTON_NONE || button & (SYS_EVENT|BUTTON_MULTIMEDIA))
|
||||
return button;
|
||||
/* Don't send any buttons through untill we see the release event */
|
||||
if (wait_for_release)
|
||||
|
|
|
@ -1045,18 +1045,18 @@ long gui_wps_show(void)
|
|||
exit = true;
|
||||
break;
|
||||
#endif
|
||||
case SYS_POWEROFF:
|
||||
default_event_handler(SYS_POWEROFF);
|
||||
break;
|
||||
case ACTION_WPS_VIEW_PLAYLIST:
|
||||
gwps_leave_wps();
|
||||
return GO_TO_PLAYLIST_VIEWER;
|
||||
break;
|
||||
default:
|
||||
if(default_event_handler(button) == SYS_USB_CONNECTED)
|
||||
{
|
||||
gwps_leave_wps();
|
||||
return GO_TO_ROOT;
|
||||
switch(default_event_handler(button))
|
||||
{ /* music has been stopped by the default handler */
|
||||
case SYS_USB_CONNECTED:
|
||||
case SYS_CALL_INCOMING:
|
||||
case BUTTON_MULTIMEDIA_STOP:
|
||||
gwps_leave_wps();
|
||||
return GO_TO_ROOT;
|
||||
}
|
||||
update = true;
|
||||
break;
|
||||
|
|
16
apps/menu.c
16
apps/menu.c
|
@ -650,10 +650,20 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
|
|||
}
|
||||
#endif
|
||||
}
|
||||
else if(default_event_handler(action) == SYS_USB_CONNECTED)
|
||||
else
|
||||
{
|
||||
ret = MENU_ATTACHED_USB;
|
||||
done = true;
|
||||
switch(default_event_handler(action))
|
||||
{
|
||||
case SYS_USB_CONNECTED:
|
||||
ret = MENU_ATTACHED_USB;
|
||||
done = true;
|
||||
break;
|
||||
case SYS_CALL_HUNG_UP:
|
||||
case BUTTON_MULTIMEDIA_PLAYPAUSE:
|
||||
/* remove splash from playlist_resume() */
|
||||
redraw_lists = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (redraw_lists && !done)
|
||||
|
|
37
apps/misc.c
37
apps/misc.c
|
@ -529,6 +529,7 @@ long default_event_handler_ex(long event, void (*callback)(void *), void *parame
|
|||
#if CONFIG_PLATFORM & PLATFORM_ANDROID
|
||||
static bool resume = false;
|
||||
#endif
|
||||
|
||||
switch(event)
|
||||
{
|
||||
case SYS_BATTERY_UPDATE:
|
||||
|
@ -629,10 +630,44 @@ long default_event_handler_ex(long event, void (*callback)(void *), void *parame
|
|||
if (resume && playlist_resume() != -1)
|
||||
{
|
||||
playlist_start(global_status.resume_index,
|
||||
global_status.resume_offset);
|
||||
global_status.resume_offset);
|
||||
}
|
||||
resume = false;
|
||||
return SYS_CALL_HUNG_UP;
|
||||
#endif
|
||||
#ifdef HAVE_MULTIMEDIA_KEYS
|
||||
/* multimedia keys on keyboards, headsets */
|
||||
case BUTTON_MULTIMEDIA_PLAYPAUSE:
|
||||
{
|
||||
int status = audio_status();
|
||||
if (status & AUDIO_STATUS_PLAY)
|
||||
{
|
||||
if (status & AUDIO_STATUS_PAUSE)
|
||||
audio_resume();
|
||||
else
|
||||
audio_pause();
|
||||
}
|
||||
else
|
||||
if (playlist_resume() != -1)
|
||||
{
|
||||
playlist_start(global_status.resume_index,
|
||||
global_status.resume_offset);
|
||||
}
|
||||
return event;
|
||||
}
|
||||
case BUTTON_MULTIMEDIA_NEXT:
|
||||
audio_next();
|
||||
return event;
|
||||
case BUTTON_MULTIMEDIA_PREV:
|
||||
audio_prev();
|
||||
return event;
|
||||
case BUTTON_MULTIMEDIA_STOP:
|
||||
list_stop_handler();
|
||||
return event;
|
||||
case BUTTON_MULTIMEDIA_REW:
|
||||
case BUTTON_MULTIMEDIA_FFWD:
|
||||
/* not supported yet, needs to be done in the WPS */
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue