1
0
Fork 0
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:
Thomas Martitz 2010-10-31 15:32:57 +00:00
parent dbe2ac1ec6
commit 49f1ec8e8a
13 changed files with 300 additions and 17 deletions

View file

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

View file

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

View file

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

View file

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