1
0
Fork 0
forked from len0rd/rockbox

Fix locked context fallthrough

Enabling locked actions for all softlock targets accidentally
broke keylock on touchscreens because the generic touchscreen
keymap was missed. Trying to lookup CONTEXT_WPS|CONTEXT_LOCKED
returned the mapping for CONTEXT_STD because the locked version
wasn't explicitly handled.

But on almost all cases, a context's keymap does not change when
the screen is locked. It makes more sense to mask out the locked
flag and only check for it where needed.

Change-Id: I65cda2de82950d272d4394fd772286699e7c3779
This commit is contained in:
Aidan MacDonald 2023-03-17 23:43:39 +00:00
parent 0c29d1788e
commit a0a59ab610
17 changed files with 20 additions and 66 deletions

View file

@ -221,17 +221,14 @@ static const struct button_mapping button_context_bmark[] = {
/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
return button_context_mainmenu;
case CONTEXT_TREE:

View file

@ -399,13 +399,11 @@ static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
@ -416,7 +414,6 @@ const struct button_mapping* get_context_mapping(int context)
return button_context_listtree_scroll_without_combo;
else
return button_context_listtree_scroll_with_combo;
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
return button_context_mainmenu;
case CONTEXT_CUSTOM|CONTEXT_TREE:

View file

@ -194,17 +194,14 @@ static const struct button_mapping button_context_bmark[] = {
/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
return button_context_mainmenu;

View file

@ -324,18 +324,16 @@ static const struct button_mapping button_context_usb_hid_mode_browser[] = {
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
default:
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS | CONTEXT_LOCKED:
return button_context_wps_locked;
case CONTEXT_WPS:
if (context & CONTEXT_LOCKED)
return button_context_wps_locked;
return button_context_wps;
case CONTEXT_TREE:
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
if (global_settings.hold_lr_for_scroll_in_list)
return button_context_tree_scroll_lr;

View file

@ -192,11 +192,10 @@ static const struct button_mapping button_context_yesnoscreen[] = {
/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_BOOKMARKSCREEN:
@ -215,10 +214,8 @@ const struct button_mapping* get_context_mapping(int context)
case CONTEXT_SETTINGS_RECTRIGGER:
return button_context_settings_vol_is_inc;
case CONTEXT_TREE:
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
return button_context_tree;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_YESNOSCREEN:

View file

@ -407,17 +407,14 @@ static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
return button_context_tree;
case CONTEXT_SETTINGS:
return button_context_settings;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_YESNOSCREEN:

View file

@ -188,11 +188,10 @@ static const struct button_mapping button_context_yesnoscreen[] = {
/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
/* anything that uses button_context_standard */
case CONTEXT_LIST:
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
default:
return button_context_standard;
@ -221,14 +220,13 @@ const struct button_mapping* get_context_mapping(int context)
return button_context_settings_r_is_inc;
case CONTEXT_TREE:
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
if (global_settings.hold_lr_for_scroll_in_list)
return button_context_tree_scroll_lr;
/* else fall through to CONTEXT_TREE|CONTEXT_CUSTOM */
case CONTEXT_TREE|CONTEXT_CUSTOM:
return button_context_tree;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;

View file

@ -357,17 +357,14 @@ static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
return button_context_tree;
case CONTEXT_SETTINGS:
return button_context_settings;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_YESNOSCREEN:

View file

@ -127,18 +127,15 @@ static const struct button_mapping button_context_usb_hid[] = {
const struct button_mapping* target_get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
case CONTEXT_TREE:
if (global_settings.hold_lr_for_scroll_in_list)

View file

@ -164,12 +164,10 @@ static const struct button_mapping button_context_usb_hid_mode_mouse[] = {
/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
#ifdef CONFIG_TUNER
@ -192,7 +190,6 @@ const struct button_mapping* get_context_mapping(int context)
#endif
case CONTEXT_TREE:
case CONTEXT_LIST:
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
case CONTEXT_SETTINGS:

View file

@ -69,18 +69,15 @@ static const struct button_mapping button_context_yesno[] = {
const struct button_mapping* target_get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
default:
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_TREE:
case CONTEXT_CUSTOM|CONTEXT_TREE:
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
case CONTEXT_BOOKMARKSCREEN:
case CONTEXT_LIST:

View file

@ -383,7 +383,7 @@ const struct button_mapping* get_context_mapping(int context)
return target_get_context_mapping(context & ~CONTEXT_CUSTOM2);
}
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_STD:
return button_context_standard;

View file

@ -184,11 +184,10 @@ static const struct button_mapping button_context_yesnoscreen[] = {
/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_BOOKMARKSCREEN:
@ -207,10 +206,8 @@ const struct button_mapping* get_context_mapping(int context)
case CONTEXT_SETTINGS_RECTRIGGER:
return button_context_settings_vol_is_inc;
case CONTEXT_TREE:
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
return button_context_tree;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_YESNOSCREEN:

View file

@ -184,11 +184,10 @@ static const struct button_mapping button_context_yesnoscreen[] = {
/* get_context_mapping returns a pointer to one of the above defined arrays depending on the context */
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_BOOKMARKSCREEN:
@ -207,10 +206,8 @@ const struct button_mapping* get_context_mapping(int context)
case CONTEXT_SETTINGS_RECTRIGGER:
return button_context_settings_vol_is_inc;
case CONTEXT_TREE:
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
return button_context_tree;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_YESNOSCREEN:

View file

@ -255,18 +255,15 @@ static const struct button_mapping button_context_radio[] = {
const struct button_mapping* get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
return button_context_mainmenu;

View file

@ -132,18 +132,15 @@ static const struct button_mapping button_context_radio[] = {
const struct button_mapping* target_get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
case CONTEXT_CUSTOM|CONTEXT_TREE:
return button_context_tree;

View file

@ -137,18 +137,15 @@ static const struct button_mapping button_context_radio[] = {
const struct button_mapping* target_get_context_mapping(int context)
{
switch (context)
switch (context & ~CONTEXT_LOCKED)
{
case CONTEXT_STD | CONTEXT_LOCKED:
case CONTEXT_STD:
return button_context_standard;
case CONTEXT_WPS | CONTEXT_LOCKED:
case CONTEXT_WPS:
return button_context_wps;
case CONTEXT_LIST:
return button_context_list;
case CONTEXT_MAINMENU | CONTEXT_LOCKED:
case CONTEXT_MAINMENU:
case CONTEXT_TREE:
if (global_settings.hold_lr_for_scroll_in_list)