(Android) fix back button binds acting up

This commit is contained in:
ToadKing 2013-01-30 12:34:55 -05:00
parent f9a47fb280
commit ee8683396f
3 changed files with 8 additions and 12 deletions

View File

@ -32,8 +32,8 @@
static unsigned pads_connected;
static int state_device_ids[MAX_PADS];
static int back_exits[MAX_PADS];
static uint64_t state[MAX_PADS];
static bool ignore_p1_back;
struct input_pointer
{
@ -120,18 +120,17 @@ static void android_input_poll(void *data)
{
state_id = pads_connected;
state_device_ids[pads_connected++] = id;
bool back_exit = true;
input_autodetect_setup(android_app, msg, sizeof(msg), state_id, id, source, &back_exit);
input_autodetect_setup(android_app, msg, sizeof(msg), state_id, id, source);
long_msg_enable = true;
back_exits[state_id] = back_exit;
if (state_id == 0)
ignore_p1_back = (keycode_lut[AKEYCODE_BACK] != 0);
}
if (keycode == AKEYCODE_BACK)
if (keycode == AKEYCODE_BACK && (!ignore_p1_back || state_id != 0))
{
if (back_exits[state_id])
*lifecycle_state |= (1ULL << RARCH_QUIT_KEY);
*lifecycle_state |= (1ULL << RARCH_QUIT_KEY);
AInputQueue_finishEvent(android_app->inputQueue, event, handled);
break;
}

View File

@ -96,7 +96,7 @@ void input_autodetect_init (void)
}
}
void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned port, unsigned id, int source, bool *back_exits)
void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned port, unsigned id, int source)
{
struct android_app *android_app = (struct android_app*)data;
// Hack - we have to add '1' to the bit mask here because
@ -364,7 +364,6 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned
keycode_lut[AKEYCODE_BACK] |= ((RETRO_DEVICE_ID_JOYPAD_SELECT+1) << shift);
keycode_lut[AKEYCODE_BUTTON_THUMBL] |= ((RETRO_DEVICE_ID_JOYPAD_L3+1) << shift);
keycode_lut[AKEYCODE_BUTTON_THUMBR] |= ((RETRO_DEVICE_ID_JOYPAD_R3+1) << shift);
*back_exits = false;
}
else if (strstr(name_buf, "USB,2-axis 8-button gamepad") ||
strstr(name_buf, "BUFFALO BGC-FC801"))
@ -497,7 +496,6 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned
/* Xperia Play */
/* TODO: menu button */
/* Menu : 82 */
*back_exits = false;
keycode_lut[AKEYCODE_DPAD_CENTER] |= ((RETRO_DEVICE_ID_JOYPAD_B+1) << shift);
keycode_lut[AKEYCODE_BACK] |= ((RETRO_DEVICE_ID_JOYPAD_A+1) << shift);
keycode_lut[AKEYCODE_BUTTON_X] |= ((RETRO_DEVICE_ID_JOYPAD_Y+1) << shift);
@ -521,7 +519,6 @@ void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned
* RStick Right: 40 */
/* Red Samurai */
*back_exits = false;
keycode_lut[AKEYCODE_W] |= ((RETRO_DEVICE_ID_JOYPAD_UP+1) << shift);
keycode_lut[AKEYCODE_S] |= ((RETRO_DEVICE_ID_JOYPAD_DOWN+1) << shift);
keycode_lut[AKEYCODE_A] |= ((RETRO_DEVICE_ID_JOYPAD_LEFT+1) << shift);

View File

@ -64,6 +64,6 @@ extern uint64_t keycode_lut[LAST_KEYCODE];
extern bool volume_enable;
void input_autodetect_init (void);
void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned port, unsigned id, int source, bool *back_exit);
void input_autodetect_setup (void *data, char *msg, size_t sizeof_msg, unsigned port, unsigned id, int source);
#endif