diff --git a/android/native/jni/input_android.c b/android/native/jni/input_android.c index 05be2cb706..2b651db303 100644 --- a/android/native/jni/input_android.c +++ b/android/native/jni/input_android.c @@ -286,7 +286,7 @@ static void android_input_poll(void *data) { int ident; uint64_t *lifecycle_state = &g_extern.lifecycle_state; - *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_QUIT_KEY) | (1ULL << RARCH_MENU_TOGGLE)); + *lifecycle_state &= ~((1ULL << RARCH_RESET) | (1ULL << RARCH_REWIND) | (1ULL << RARCH_FAST_FORWARD_KEY) | (1ULL << RARCH_FAST_FORWARD_HOLD_KEY) | (1ULL << RARCH_MUTE) | (1ULL << RARCH_SAVE_STATE_KEY) | (1ULL << RARCH_LOAD_STATE_KEY) | (1ULL << RARCH_STATE_SLOT_PLUS) | (1ULL << RARCH_STATE_SLOT_MINUS) | (1ULL << RARCH_QUIT_KEY)); while ((ident = ALooper_pollAll((input_key_pressed_func(RARCH_PAUSE_TOGGLE)) ? -1 : 0, NULL, NULL, NULL)) >= 0) @@ -363,12 +363,17 @@ static void android_input_poll(void *data) } else if (g_settings.input.back_behavior == BACK_BUTTON_MENU_TOGGLE) { - *lifecycle_state |= (1ULL << RARCH_MENU_TOGGLE); + int action = AKeyEvent_getAction(event); + if (action == AKEY_EVENT_ACTION_DOWN) + *lifecycle_state |= (1ULL << RARCH_MENU_TOGGLE); + else if (action == AKEY_EVENT_ACTION_UP) + *lifecycle_state &= ~(1ULL << RARCH_MENU_TOGGLE); AInputQueue_finishEvent(android_app->inputQueue, event, handled); break; } else { + // exits the app, so no need to check for up/down action *lifecycle_state |= (1ULL << RARCH_QUIT_KEY); AInputQueue_finishEvent(android_app->inputQueue, event, handled); break;