Move flushing_input to input_driver.c
This commit is contained in:
parent
23d63d0b5a
commit
253649b0cf
1
driver.h
1
driver.h
|
@ -267,7 +267,6 @@ typedef struct driver
|
||||||
rarch_remote_t *remote;
|
rarch_remote_t *remote;
|
||||||
#endif
|
#endif
|
||||||
bool block_libretro_input;
|
bool block_libretro_input;
|
||||||
bool flushing_input;
|
|
||||||
bool nonblock_state;
|
bool nonblock_state;
|
||||||
|
|
||||||
/* Last message given to the video driver */
|
/* Last message given to the video driver */
|
||||||
|
|
|
@ -82,6 +82,7 @@ struct turbo_buttons
|
||||||
unsigned count;
|
unsigned count;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static bool flushing_input;
|
||||||
static bool block_hotkey;
|
static bool block_hotkey;
|
||||||
static turbo_buttons_t turbo_btns;
|
static turbo_buttons_t turbo_btns;
|
||||||
|
|
||||||
|
@ -499,7 +500,7 @@ int16_t input_state(unsigned port, unsigned device,
|
||||||
if (settings->input.remap_binds_enable)
|
if (settings->input.remap_binds_enable)
|
||||||
input_remapping_state(port, &device, &idx, &id);
|
input_remapping_state(port, &device, &idx, &id);
|
||||||
|
|
||||||
if (!driver->flushing_input && !driver->block_libretro_input)
|
if (!flushing_input && !driver->block_libretro_input)
|
||||||
{
|
{
|
||||||
if (((id < RARCH_FIRST_META_KEY) || (device == RETRO_DEVICE_KEYBOARD)))
|
if (((id < RARCH_FIRST_META_KEY) || (device == RETRO_DEVICE_KEYBOARD)))
|
||||||
res = input->input_state(driver->input_data, libretro_input_binds, port, device, idx, id);
|
res = input->input_state(driver->input_data, libretro_input_binds, port, device, idx, id);
|
||||||
|
@ -687,7 +688,8 @@ bool input_driver_ctl(enum rarch_input_ctl_state state, void *data)
|
||||||
driver->input->free(driver->input_data);
|
driver->input->free(driver->input_data);
|
||||||
return true;
|
return true;
|
||||||
case RARCH_INPUT_CTL_DESTROY:
|
case RARCH_INPUT_CTL_DESTROY:
|
||||||
block_hotkey = false;
|
flushing_input = false;
|
||||||
|
block_hotkey = false;
|
||||||
memset(&turbo_btns, 0, sizeof(turbo_buttons_t));
|
memset(&turbo_btns, 0, sizeof(turbo_buttons_t));
|
||||||
if (!driver)
|
if (!driver)
|
||||||
return false;
|
return false;
|
||||||
|
@ -727,6 +729,14 @@ bool input_driver_ctl(enum rarch_input_ctl_state state, void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
case RARCH_INPUT_CTL_SET_FLUSHING_INPUT:
|
||||||
|
flushing_input = true;
|
||||||
|
break;
|
||||||
|
case RARCH_INPUT_CTL_UNSET_FLUSHING_INPUT:
|
||||||
|
flushing_input = false;
|
||||||
|
break;
|
||||||
|
case RARCH_INPUT_CTL_IS_FLUSHING_INPUT:
|
||||||
|
return flushing_input;
|
||||||
case RARCH_INPUT_CTL_NONE:
|
case RARCH_INPUT_CTL_NONE:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -56,7 +56,10 @@ enum rarch_input_ctl_state
|
||||||
RARCH_INPUT_CTL_POLL,
|
RARCH_INPUT_CTL_POLL,
|
||||||
RARCH_INPUT_CTL_FIND_DRIVER,
|
RARCH_INPUT_CTL_FIND_DRIVER,
|
||||||
RARCH_INPUT_CTL_GRAB_STDIN,
|
RARCH_INPUT_CTL_GRAB_STDIN,
|
||||||
RARCH_INPUT_CTL_KB_MAPPING_IS_BLOCKED
|
RARCH_INPUT_CTL_KB_MAPPING_IS_BLOCKED,
|
||||||
|
RARCH_INPUT_CTL_SET_FLUSHING_INPUT,
|
||||||
|
RARCH_INPUT_CTL_UNSET_FLUSHING_INPUT,
|
||||||
|
RARCH_INPUT_CTL_IS_FLUSHING_INPUT
|
||||||
};
|
};
|
||||||
|
|
||||||
struct retro_keybind
|
struct retro_keybind
|
||||||
|
|
|
@ -329,7 +329,7 @@ void menu_driver_toggle(bool latch)
|
||||||
event_command(EVENT_CMD_AUDIO_START);
|
event_command(EVENT_CMD_AUDIO_START);
|
||||||
|
|
||||||
/* Prevent stray input from going to libretro core */
|
/* Prevent stray input from going to libretro core */
|
||||||
driver->flushing_input = true;
|
input_driver_ctl(RARCH_INPUT_CTL_SET_FLUSHING_INPUT, NULL);
|
||||||
|
|
||||||
/* Restore libretro keyboard callback. */
|
/* Restore libretro keyboard callback. */
|
||||||
if (global)
|
if (global)
|
||||||
|
|
|
@ -177,7 +177,7 @@ static void menu_input_key_end_line(void)
|
||||||
menu_input_ctl(MENU_INPUT_CTL_UNSET_KEYBOARD_LABEL_SETTING, NULL);
|
menu_input_ctl(MENU_INPUT_CTL_UNSET_KEYBOARD_LABEL_SETTING, NULL);
|
||||||
|
|
||||||
/* Avoid triggering states on pressing return. */
|
/* Avoid triggering states on pressing return. */
|
||||||
driver->flushing_input = true;
|
input_driver_ctl(RARCH_INPUT_CTL_SET_FLUSHING_INPUT, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void menu_input_search_callback(void *userdata, const char *str)
|
static void menu_input_search_callback(void *userdata, const char *str)
|
||||||
|
@ -744,7 +744,7 @@ int menu_input_key_bind_iterate(char *s, size_t len)
|
||||||
if (menu_input->binds.begin > menu_input->binds.last)
|
if (menu_input->binds.begin > menu_input->binds.last)
|
||||||
{
|
{
|
||||||
/* Avoid new binds triggering things right away. */
|
/* Avoid new binds triggering things right away. */
|
||||||
driver->flushing_input = true;
|
input_driver_ctl(RARCH_INPUT_CTL_SET_FLUSHING_INPUT, NULL);
|
||||||
|
|
||||||
/* We won't be getting any key events, so just cancel early. */
|
/* We won't be getting any key events, so just cancel early. */
|
||||||
if (timed_out)
|
if (timed_out)
|
||||||
|
@ -764,7 +764,7 @@ int menu_input_key_bind_iterate(char *s, size_t len)
|
||||||
input_driver_keyboard_mapping_set_block(false);
|
input_driver_keyboard_mapping_set_block(false);
|
||||||
|
|
||||||
/* Avoid new binds triggering things right away. */
|
/* Avoid new binds triggering things right away. */
|
||||||
driver->flushing_input = true;
|
input_driver_ctl(RARCH_INPUT_CTL_SET_FLUSHING_INPUT, NULL);
|
||||||
|
|
||||||
binds.begin++;
|
binds.begin++;
|
||||||
|
|
||||||
|
|
12
runloop.c
12
runloop.c
|
@ -818,7 +818,7 @@ static void rarch_main_iterate_linefeed_overlay(driver_t *driver,
|
||||||
|
|
||||||
#ifdef HAVE_MENU
|
#ifdef HAVE_MENU
|
||||||
static bool rarch_main_cmd_get_state_menu_toggle_button_combo(
|
static bool rarch_main_cmd_get_state_menu_toggle_button_combo(
|
||||||
driver_t *driver, settings_t *settings,
|
settings_t *settings,
|
||||||
retro_input_t input, retro_input_t old_input,
|
retro_input_t input, retro_input_t old_input,
|
||||||
retro_input_t trigger_input)
|
retro_input_t trigger_input)
|
||||||
{
|
{
|
||||||
|
@ -844,7 +844,7 @@ static bool rarch_main_cmd_get_state_menu_toggle_button_combo(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
driver->flushing_input = true;
|
input_driver_ctl(RARCH_INPUT_CTL_SET_FLUSHING_INPUT, NULL);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -861,7 +861,7 @@ static void rarch_main_cmd_get_state(driver_t *driver,
|
||||||
cmd->grab_mouse_pressed = BIT64_GET(trigger_input, RARCH_GRAB_MOUSE_TOGGLE);
|
cmd->grab_mouse_pressed = BIT64_GET(trigger_input, RARCH_GRAB_MOUSE_TOGGLE);
|
||||||
#ifdef HAVE_MENU
|
#ifdef HAVE_MENU
|
||||||
cmd->menu_pressed = BIT64_GET(trigger_input, RARCH_MENU_TOGGLE) ||
|
cmd->menu_pressed = BIT64_GET(trigger_input, RARCH_MENU_TOGGLE) ||
|
||||||
rarch_main_cmd_get_state_menu_toggle_button_combo(driver,
|
rarch_main_cmd_get_state_menu_toggle_button_combo(
|
||||||
settings, input,
|
settings, input,
|
||||||
old_input, trigger_input);
|
old_input, trigger_input);
|
||||||
#endif
|
#endif
|
||||||
|
@ -974,9 +974,9 @@ int rarch_main_iterate(unsigned *sleep_ms)
|
||||||
retro_input_t old_input = last_input;
|
retro_input_t old_input = last_input;
|
||||||
last_input = input;
|
last_input = input;
|
||||||
|
|
||||||
if (driver->flushing_input)
|
if (input_driver_ctl(RARCH_INPUT_CTL_IS_FLUSHING_INPUT, NULL))
|
||||||
{
|
{
|
||||||
driver->flushing_input = false;
|
input_driver_ctl(RARCH_INPUT_CTL_UNSET_FLUSHING_INPUT, NULL);
|
||||||
if (input)
|
if (input)
|
||||||
{
|
{
|
||||||
input = 0;
|
input = 0;
|
||||||
|
@ -986,7 +986,7 @@ int rarch_main_iterate(unsigned *sleep_ms)
|
||||||
* pause toggle to wake it up. */
|
* pause toggle to wake it up. */
|
||||||
if (main_is_paused)
|
if (main_is_paused)
|
||||||
BIT64_SET(input, RARCH_PAUSE_TOGGLE);
|
BIT64_SET(input, RARCH_PAUSE_TOGGLE);
|
||||||
driver->flushing_input = true;
|
input_driver_ctl(RARCH_INPUT_CTL_SET_FLUSHING_INPUT, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue