reimplement using retro_bits_t; pass by ref; raise bind limit to 256

This commit is contained in:
David Walters 2017-11-24 11:19:17 +00:00
parent 5294d43bf1
commit 5be7921445
5 changed files with 94 additions and 85 deletions

View File

@ -780,11 +780,10 @@ void state_tracker_update_input(uint16_t *input1, uint16_t *input2)
*
* Returns: Input sample containing a mask of all pressed keys.
*/
rarch_input_state_t input_menu_keys_pressed(void *data, rarch_input_state_t last_input)
void input_menu_keys_pressed(void *data, retro_bits_t* p_new_state)
{
unsigned i, port;
rarch_joypad_info_t joypad_info;
rarch_input_state_t new_state = {0};
const struct retro_keybind *binds[MAX_USERS] = {NULL};
settings_t *settings = (settings_t*)data;
const struct retro_keybind *binds_norm = NULL;
@ -794,6 +793,8 @@ rarch_input_state_t input_menu_keys_pressed(void *data, rarch_input_state_t last
settings->bools.input_all_users_control_menu
? max_users : 1;
RARCH_INPUT_STATE_CLEAR_PTR( p_new_state );
input_driver_block_libretro_input = false;
input_driver_block_hotkey = false;
@ -894,7 +895,7 @@ rarch_input_state_t input_menu_keys_pressed(void *data, rarch_input_state_t last
if (pressed)
{
RARCH_INPUT_STATE_BIT_SET(new_state, i);
RARCH_INPUT_STATE_BIT_SET_PTR(p_new_state, i);
continue;
}
}
@ -904,7 +905,7 @@ rarch_input_state_t input_menu_keys_pressed(void *data, rarch_input_state_t last
{
if (current_input->meta_key_pressed(current_input_data, i))
{
RARCH_INPUT_STATE_BIT_SET(new_state, i);
RARCH_INPUT_STATE_BIT_SET_PTR(p_new_state, i);
continue;
}
}
@ -912,7 +913,7 @@ rarch_input_state_t input_menu_keys_pressed(void *data, rarch_input_state_t last
#ifdef HAVE_OVERLAY
if (overlay_ptr && input_overlay_key_pressed(overlay_ptr, i))
{
RARCH_INPUT_STATE_BIT_SET(new_state, i);
RARCH_INPUT_STATE_BIT_SET_PTR(p_new_state, i);
continue;
}
#endif
@ -927,7 +928,7 @@ rarch_input_state_t input_menu_keys_pressed(void *data, rarch_input_state_t last
if (command_get(&handle))
{
RARCH_INPUT_STATE_BIT_SET(new_state, i);
RARCH_INPUT_STATE_BIT_SET_PTR(p_new_state, i);
continue;
}
}
@ -936,7 +937,7 @@ rarch_input_state_t input_menu_keys_pressed(void *data, rarch_input_state_t last
#ifdef HAVE_NETWORKGAMEPAD
if (input_driver_remote && input_remote_key_pressed(i, 0))
{
RARCH_INPUT_STATE_BIT_SET(new_state, i);
RARCH_INPUT_STATE_BIT_SET_PTR(p_new_state, i);
continue;
}
#endif
@ -991,11 +992,9 @@ rarch_input_state_t input_menu_keys_pressed(void *data, rarch_input_state_t last
{
if (current_input->input_state(current_input_data, joypad_info, binds, 0,
RETRO_DEVICE_KEYBOARD, 0, ids[i][0]))
RARCH_INPUT_STATE_BIT_SET(new_state, ids[i][1]);
RARCH_INPUT_STATE_BIT_SET_PTR(p_new_state, ids[i][1]);
}
}
return new_state;
}
#endif
@ -1006,11 +1005,10 @@ rarch_input_state_t input_menu_keys_pressed(void *data, rarch_input_state_t last
*
* Returns: Input sample containing a mask of all pressed keys.
*/
rarch_input_state_t input_keys_pressed(void *data, rarch_input_state_t last_input)
void input_keys_pressed(void *data, retro_bits_t* p_new_state)
{
unsigned i;
rarch_joypad_info_t joypad_info;
rarch_input_state_t new_state = {0};
settings_t *settings = (settings_t*)data;
const struct retro_keybind *binds = input_config_binds[0];
const struct retro_keybind *binds_auto = &input_autoconf_binds[0][RARCH_ENABLE_HOTKEY];
@ -1021,6 +1019,8 @@ rarch_input_state_t input_keys_pressed(void *data, rarch_input_state_t last_inpu
const struct retro_keybind *enable_hotkey = &input_config_binds[0][RARCH_ENABLE_HOTKEY];
bool game_focus_toggle_valid = false;
RARCH_INPUT_STATE_CLEAR_PTR( p_new_state );
joypad_info.joy_idx = settings->uints.input_joypad_map[0];
joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx];
joypad_info.axis_threshold = input_driver_axis_threshold;
@ -1065,7 +1065,7 @@ rarch_input_state_t input_keys_pressed(void *data, rarch_input_state_t last_inpu
0, RETRO_DEVICE_JOYPAD, 0, i)
)
{
RARCH_INPUT_STATE_BIT_SET(new_state, i);
RARCH_INPUT_STATE_BIT_SET_PTR(p_new_state, i);
continue;
}
@ -1073,7 +1073,7 @@ rarch_input_state_t input_keys_pressed(void *data, rarch_input_state_t last_inpu
current_input->meta_key_pressed(current_input_data, i)
)
{
RARCH_INPUT_STATE_BIT_SET(new_state, i);
RARCH_INPUT_STATE_BIT_SET_PTR(p_new_state, i);
continue;
}
@ -1081,7 +1081,7 @@ rarch_input_state_t input_keys_pressed(void *data, rarch_input_state_t last_inpu
if (overlay_ptr &&
input_overlay_key_pressed(overlay_ptr, i))
{
RARCH_INPUT_STATE_BIT_SET(new_state, i);
RARCH_INPUT_STATE_BIT_SET_PTR(p_new_state, i);
continue;
}
#endif
@ -1096,7 +1096,7 @@ rarch_input_state_t input_keys_pressed(void *data, rarch_input_state_t last_inpu
if (command_get(&handle))
{
RARCH_INPUT_STATE_BIT_SET(new_state, i);
RARCH_INPUT_STATE_BIT_SET_PTR(p_new_state, i);
continue;
}
}
@ -1106,13 +1106,11 @@ rarch_input_state_t input_keys_pressed(void *data, rarch_input_state_t last_inpu
if (input_driver_remote &&
input_remote_key_pressed(i, 0))
{
RARCH_INPUT_STATE_BIT_SET(new_state, i);
RARCH_INPUT_STATE_BIT_SET_PTR(p_new_state, i);
continue;
}
#endif
}
return new_state;
}

View File

@ -30,6 +30,7 @@
#include <retro_common_api.h>
#include <retro_inline.h>
#include <libretro.h>
#include <retro_miscellaneous.h>
#include "input_defines.h"
@ -333,24 +334,30 @@ void input_poll(void);
int16_t input_state(unsigned port, unsigned device,
unsigned idx, unsigned id);
typedef struct {
uint32_t bank[ 4 ]; /* 128 bits */
} rarch_input_state_t;
#define RARCH_INPUT_STATE_BIT_SET(a, bit) ((a).bank[((bit) >> 5)&3] |= (1 << ((bit) & 31)))
#define RARCH_INPUT_STATE_BIT_GET(a, bit) ((a).bank[((bit) >> 5)&3] & (1 << ((bit) & 31)))
#define RARCH_INPUT_STATE_CLEAR(a) memset(&(a), 0, sizeof(a));
#define RARCH_INPUT_STATE_ANY_SET(a) (((a).bank[0])||((a).bank[1])||((a).bank[2])||((a).bank[3]))
#define RARCH_INPUT_STATE_BIT_SET(a,bit) ((a).data [((bit) >> 5)] |= (1 << ((bit) & 31)))
#define RARCH_INPUT_STATE_BIT_SET_PTR(a,bit) ((a)->data[((bit) >> 5)] |= (1 << ((bit) & 31)))
#define RARCH_INPUT_STATE_BIT_GET(a,bit) ((a).data [((bit) >> 5)] & (1 << ((bit) & 31)))
#define RARCH_INPUT_STATE_BIT_GET_PTR(a,bit) ((a)->data[((bit) >> 5)] & (1 << ((bit) & 31)))
#define RARCH_INPUT_STATE_CLEAR(a) memset(&a, 0, sizeof(a));
#define RARCH_INPUT_STATE_CLEAR_PTR(a) memset(a, 0, sizeof(retro_bits_t));
#define RARCH_INPUT_STATE_ANY_SET(a) ( ((a).data[0])||((a).data[1])||((a).data[2])||((a).data[3])|| \
((a).data[4])||((a).data[5])||((a).data[6])||((a).data[7]) )
#define RARCH_INPUT_STATE_ANY_SET_PTR(a) ( ((a)->data[0])||((a)->data[1])||((a)->data[2])||((a)->data[3])|| \
((a)->data[4])||((a)->data[5])||((a)->data[6])||((a)->data[7]) )
#define RARCH_INPUT_STATE_CLEAR_BITS(a,b) \
((a).bank[0])&=(~((b).bank[0])); \
((a).bank[1])&=(~((b).bank[1])); \
((a).bank[2])&=(~((b).bank[2])); \
((a).bank[3])&=(~((b).bank[3]));
((a).data[0])&=(~((b).data[0])); \
((a).data[1])&=(~((b).data[1])); \
((a).data[2])&=(~((b).data[2])); \
((a).data[3])&=(~((b).data[3])); \
((a).data[4])&=(~((b).data[4])); \
((a).data[5])&=(~((b).data[5])); \
((a).data[6])&=(~((b).data[6])); \
((a).data[7])&=(~((b).data[7]));
rarch_input_state_t input_keys_pressed(void *data, rarch_input_state_t last_input);
void input_keys_pressed(void *data, retro_bits_t* new_state);
#ifdef HAVE_MENU
rarch_input_state_t input_menu_keys_pressed(void *data, rarch_input_state_t last_input);
void input_menu_keys_pressed(void *data, retro_bits_t* new_state);
#endif
void *input_driver_get_data(void);

View File

@ -137,7 +137,7 @@ void menu_event_kb_set(bool down, enum retro_key key)
* entire button state either but do a separate event per button
* state.
*/
unsigned menu_event(rarch_input_state_t input, rarch_input_state_t trigger_input)
unsigned menu_event(retro_bits_t* p_input, retro_bits_t* p_trigger_input)
{
menu_animation_ctx_delta_t delta;
float delta_time;
@ -160,12 +160,12 @@ unsigned menu_event(rarch_input_state_t input, rarch_input_state_t trigger_input
unsigned menu_cancel_btn = (!input_swap_override &&
settings->bools.input_menu_swap_ok_cancel_buttons) ?
RETRO_DEVICE_ID_JOYPAD_A : RETRO_DEVICE_ID_JOYPAD_B;
unsigned ok_current = RARCH_INPUT_STATE_BIT_GET( input, menu_ok_btn );
unsigned ok_current = RARCH_INPUT_STATE_BIT_GET_PTR(p_input, menu_ok_btn );
unsigned ok_trigger = ok_current & ~ok_old;
ok_old = ok_current;
if (RARCH_INPUT_STATE_ANY_SET(input))
if (RARCH_INPUT_STATE_ANY_SET_PTR(p_input))
{
if (!first_held)
{
@ -189,7 +189,7 @@ unsigned menu_event(rarch_input_state_t input, rarch_input_state_t trigger_input
set_scroll = true;
first_held = false;
trigger_input.bank[0] |= input.bank[0] & input_repeat;
p_trigger_input->data[0] |= p_input->data[0] & input_repeat;
menu_driver_ctl(MENU_NAVIGATION_CTL_GET_SCROLL_ACCEL,
&new_scroll_accel);
@ -221,31 +221,31 @@ unsigned menu_event(rarch_input_state_t input, rarch_input_state_t trigger_input
{
menu_event_osk_iterate();
if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_DOWN))
if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_DOWN))
{
if (menu_event_get_osk_ptr() < 33)
menu_event_set_osk_ptr(menu_event_get_osk_ptr() + OSK_CHARS_PER_LINE);
}
if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_UP))
if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_UP))
{
if (menu_event_get_osk_ptr() >= OSK_CHARS_PER_LINE)
menu_event_set_osk_ptr(menu_event_get_osk_ptr() - OSK_CHARS_PER_LINE);
}
if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_RIGHT))
if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_RIGHT))
{
if (menu_event_get_osk_ptr() < 43)
menu_event_set_osk_ptr(menu_event_get_osk_ptr() + 1);
}
if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_LEFT))
if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_LEFT))
{
if (menu_event_get_osk_ptr() >= 1)
menu_event_set_osk_ptr(menu_event_get_osk_ptr() - 1);
}
if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_L))
if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_L))
{
if (menu_event_get_osk_idx() > OSK_TYPE_UNKNOWN + 1)
menu_event_set_osk_idx((enum osk_type)(menu_event_get_osk_idx() - 1));
@ -253,7 +253,7 @@ unsigned menu_event(rarch_input_state_t input, rarch_input_state_t trigger_input
menu_event_set_osk_idx((enum osk_type)(OSK_TYPE_LAST - 1));
}
if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_R))
if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_R))
{
if (menu_event_get_osk_idx() < OSK_TYPE_LAST - 1)
menu_event_set_osk_idx((enum osk_type)(menu_event_get_osk_idx() + 1));
@ -261,50 +261,50 @@ unsigned menu_event(rarch_input_state_t input, rarch_input_state_t trigger_input
menu_event_set_osk_idx((enum osk_type)(OSK_TYPE_UNKNOWN + 1));
}
if (RARCH_INPUT_STATE_BIT_GET(trigger_input, menu_ok_btn))
if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, menu_ok_btn))
{
if (menu_event_get_osk_ptr() >= 0)
menu_event_osk_append(menu_event_get_osk_ptr());
}
if (RARCH_INPUT_STATE_BIT_GET(trigger_input, menu_cancel_btn))
if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, menu_cancel_btn))
{
input_keyboard_event(true, '\x7f', '\x7f', 0, RETRO_DEVICE_KEYBOARD);
}
/* send return key to close keyboard input window */
if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_START))
if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_START))
input_keyboard_event(true, '\n', '\n', 0, RETRO_DEVICE_KEYBOARD);
RARCH_INPUT_STATE_CLEAR(trigger_input);
RARCH_INPUT_STATE_CLEAR_PTR(p_trigger_input);
}
else
{
if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_UP))
if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_UP))
ret = MENU_ACTION_UP;
else if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_DOWN))
else if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_DOWN))
ret = MENU_ACTION_DOWN;
else if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_LEFT))
else if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_LEFT))
ret = MENU_ACTION_LEFT;
else if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_RIGHT))
else if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_RIGHT))
ret = MENU_ACTION_RIGHT;
else if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_L))
else if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_L))
ret = MENU_ACTION_SCROLL_UP;
else if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_R))
else if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_R))
ret = MENU_ACTION_SCROLL_DOWN;
else if (ok_trigger)
ret = MENU_ACTION_OK;
else if (RARCH_INPUT_STATE_BIT_GET(trigger_input, menu_cancel_btn))
else if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, menu_cancel_btn))
ret = MENU_ACTION_CANCEL;
else if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_X))
else if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_X))
ret = MENU_ACTION_SEARCH;
else if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_Y))
else if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_Y))
ret = MENU_ACTION_SCAN;
else if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_START))
else if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_START))
ret = MENU_ACTION_START;
else if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RETRO_DEVICE_ID_JOYPAD_SELECT))
else if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RETRO_DEVICE_ID_JOYPAD_SELECT))
ret = MENU_ACTION_INFO;
else if (RARCH_INPUT_STATE_BIT_GET(trigger_input, RARCH_MENU_TOGGLE))
else if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RARCH_MENU_TOGGLE))
ret = MENU_ACTION_TOGGLE;
}
@ -314,7 +314,7 @@ unsigned menu_event(rarch_input_state_t input, rarch_input_state_t trigger_input
menu_event_kb_set_internal(RETROK_F11, 0);
}
if (runloop_cmd_press(trigger_input, RARCH_QUIT_KEY))
if (RARCH_INPUT_STATE_BIT_GET_PTR(p_trigger_input, RARCH_QUIT_KEY))
return MENU_ACTION_QUIT;
mouse_enabled = settings->bools.menu_mouse_enable;

View File

@ -44,7 +44,7 @@ RETRO_BEGIN_DECLS
* entire button state either but do a separate event per button
* state.
*/
unsigned menu_event(rarch_input_state_t input, rarch_input_state_t trigger_state);
unsigned menu_event(retro_bits_t* p_input, retro_bits_t* p_trigger_state);
/* Set a specific keyboard key.
*

View File

@ -2310,40 +2310,40 @@ bool runloop_msg_queue_pull(const char **ret)
#ifdef HAVE_MENU
static bool input_driver_toggle_button_combo(
unsigned mode, rarch_input_state_t input)
unsigned mode, retro_bits_t* p_input)
{
switch (mode)
{
case INPUT_TOGGLE_DOWN_Y_L_R:
if (!RARCH_INPUT_STATE_BIT_GET(input, RETRO_DEVICE_ID_JOYPAD_DOWN))
if (!RARCH_INPUT_STATE_BIT_GET_PTR(p_input, RETRO_DEVICE_ID_JOYPAD_DOWN))
return false;
if (!RARCH_INPUT_STATE_BIT_GET(input, RETRO_DEVICE_ID_JOYPAD_Y))
if (!RARCH_INPUT_STATE_BIT_GET_PTR(p_input, RETRO_DEVICE_ID_JOYPAD_Y))
return false;
if (!RARCH_INPUT_STATE_BIT_GET(input, RETRO_DEVICE_ID_JOYPAD_L))
if (!RARCH_INPUT_STATE_BIT_GET_PTR(p_input, RETRO_DEVICE_ID_JOYPAD_L))
return false;
if (!RARCH_INPUT_STATE_BIT_GET(input, RETRO_DEVICE_ID_JOYPAD_R))
if (!RARCH_INPUT_STATE_BIT_GET_PTR(p_input, RETRO_DEVICE_ID_JOYPAD_R))
return false;
break;
case INPUT_TOGGLE_L3_R3:
if (!RARCH_INPUT_STATE_BIT_GET(input, RETRO_DEVICE_ID_JOYPAD_L3))
if (!RARCH_INPUT_STATE_BIT_GET_PTR(p_input, RETRO_DEVICE_ID_JOYPAD_L3))
return false;
if (!RARCH_INPUT_STATE_BIT_GET(input, RETRO_DEVICE_ID_JOYPAD_R3))
if (!RARCH_INPUT_STATE_BIT_GET_PTR(p_input, RETRO_DEVICE_ID_JOYPAD_R3))
return false;
break;
case INPUT_TOGGLE_L1_R1_START_SELECT:
if (!RARCH_INPUT_STATE_BIT_GET(input, RETRO_DEVICE_ID_JOYPAD_START))
if (!RARCH_INPUT_STATE_BIT_GET_PTR(p_input, RETRO_DEVICE_ID_JOYPAD_START))
return false;
if (!RARCH_INPUT_STATE_BIT_GET(input, RETRO_DEVICE_ID_JOYPAD_SELECT))
if (!RARCH_INPUT_STATE_BIT_GET_PTR(p_input, RETRO_DEVICE_ID_JOYPAD_SELECT))
return false;
if (!RARCH_INPUT_STATE_BIT_GET(input, RETRO_DEVICE_ID_JOYPAD_L))
if (!RARCH_INPUT_STATE_BIT_GET_PTR(p_input, RETRO_DEVICE_ID_JOYPAD_L))
return false;
if (!RARCH_INPUT_STATE_BIT_GET(input, RETRO_DEVICE_ID_JOYPAD_R))
if (!RARCH_INPUT_STATE_BIT_GET_PTR(p_input, RETRO_DEVICE_ID_JOYPAD_R))
return false;
break;
case INPUT_TOGGLE_START_SELECT:
if (!RARCH_INPUT_STATE_BIT_GET(input, RETRO_DEVICE_ID_JOYPAD_START))
if (!RARCH_INPUT_STATE_BIT_GET_PTR(p_input, RETRO_DEVICE_ID_JOYPAD_START))
return false;
if (!RARCH_INPUT_STATE_BIT_GET(input, RETRO_DEVICE_ID_JOYPAD_SELECT))
if (!RARCH_INPUT_STATE_BIT_GET_PTR(p_input, RETRO_DEVICE_ID_JOYPAD_SELECT))
return false;
break;
default:
@ -2360,7 +2360,7 @@ static enum runloop_state runloop_check_state(
bool input_nonblock_state,
unsigned *sleep_ms)
{
static rarch_input_state_t last_input = {0};
static retro_bits_t last_input = {0};
static bool old_fs_toggle_pressed= false;
static bool old_focus = true;
bool is_focused = false;
@ -2372,13 +2372,17 @@ static enum runloop_state runloop_check_state(
#ifdef HAVE_MENU
bool menu_driver_binding_state = menu_driver_is_binding_state();
bool menu_is_alive = menu_driver_is_alive();
rarch_input_state_t current_input =
menu_is_alive && !(settings->bools.menu_unified_controls && !menu_input_dialog_get_display_kb())?
input_menu_keys_pressed(settings, last_input) :
input_keys_pressed(settings, last_input);
retro_bits_t current_input;
if ( menu_is_alive && !(settings->bools.menu_unified_controls && !menu_input_dialog_get_display_kb()) )
input_menu_keys_pressed(settings, &current_input);
else
input_keys_pressed(settings, &current_input);
#else
uint64_t current_input =
input_keys_pressed(settings, last_input);
retro_bits_t current_input;
input_keys_pressed(settings, &current_input);
#endif
last_input = current_input;
@ -2386,7 +2390,7 @@ static enum runloop_state runloop_check_state(
if (
((settings->uints.input_menu_toggle_gamepad_combo != INPUT_TOGGLE_NONE) &&
input_driver_toggle_button_combo(
settings->uints.input_menu_toggle_gamepad_combo, last_input)))
settings->uints.input_menu_toggle_gamepad_combo, &last_input)))
{
RARCH_INPUT_STATE_BIT_SET(current_input, RARCH_MENU_TOGGLE);
}
@ -2529,20 +2533,20 @@ static enum runloop_state runloop_check_state(
#ifdef HAVE_MENU
if (menu_is_alive)
{
static rarch_input_state_t old_input = {0};
static retro_bits_t old_input = {0};
menu_ctx_iterate_t iter;
retro_ctx.poll_cb();
{
rarch_input_state_t trigger_input;
retro_bits_t trigger_input;
enum menu_action action;
bool focused;
trigger_input = current_input;
RARCH_INPUT_STATE_CLEAR_BITS( trigger_input, old_input );
action = (enum menu_action)menu_event(current_input, trigger_input);
action = (enum menu_action)menu_event(&current_input, &trigger_input);
focused = pause_nonactive ? is_focused : true;
focused = focused && !ui_companion_is_on_foreground();