From 2c956fbe856fdc735869060f8e88c0ecc3300b37 Mon Sep 17 00:00:00 2001 From: jdgleaver Date: Fri, 12 Jun 2020 16:06:32 +0100 Subject: [PATCH] (X11/udev) When fetching RETRO_DEVICE_ID_JOYPAD_MASK, only query keyboard if corresponding gamepad button is not pressed --- input/drivers/udev_input.c | 20 ++++++++++---------- input/drivers/x11_input.c | 20 ++++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c index 7c0d4b21f9..81960b3380 100644 --- a/input/drivers/udev_input.c +++ b/input/drivers/udev_input.c @@ -1028,19 +1028,19 @@ static int16_t udev_input_state(void *data, { for (i = 0; i < RARCH_FIRST_CUSTOM_BIND; i++) { - bool keyboard_pressed = false; - bool joypad_pressed = false; - if (binds[port][i].valid) { - keyboard_pressed = (binds[port][i].key < RETROK_LAST) ? - udev_keyboard_pressed(udev, binds[port][i].key) : false; - joypad_pressed = udev_is_pressed(udev, udev->joypad, - joypad_info, binds[port], port, i); - } + if (udev_is_pressed(udev, udev->joypad, + joypad_info, binds[port], port, i)) + { + ret |= (1 << i); + continue; + } - if (keyboard_pressed || joypad_pressed) - ret |= (1 << i); + if ((binds[port][i].key < RETROK_LAST) && + udev_keyboard_pressed(udev, binds[port][i].key)) + ret |= (1 << i); + } } } diff --git a/input/drivers/x11_input.c b/input/drivers/x11_input.c index 6d35eb875c..967aafb919 100644 --- a/input/drivers/x11_input.c +++ b/input/drivers/x11_input.c @@ -329,19 +329,19 @@ static int16_t x_input_state(void *data, { for (i = 0; i < RARCH_FIRST_CUSTOM_BIND; i++) { - bool keyboard_pressed = false; - bool joypad_pressed = false; - if (binds[port][i].valid) { - keyboard_pressed = (binds[port][i].key < RETROK_LAST) ? - x_keyboard_pressed(x11, binds[port][i].key) : false; - joypad_pressed = x_is_pressed(x11, x11->joypad, - joypad_info, binds[port], port, i); - } + if (x_is_pressed(x11, x11->joypad, + joypad_info, binds[port], port, i)) + { + ret |= (1 << i); + continue; + } - if (keyboard_pressed || joypad_pressed) - ret |= (1 << i); + if ((binds[port][i].key < RETROK_LAST) && + x_keyboard_pressed(x11, binds[port][i].key)) + ret |= (1 << i); + } } }