From eec072417542239069e2d4a092a9e3a827d56bfc Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 25 Sep 2014 04:58:26 +0200 Subject: [PATCH] Reimplement FLUSH_INPUT --- driver.h | 1 + libretro_version_1.c | 7 +++++-- retroarch.c | 5 +---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/driver.h b/driver.h index 4bd96ec382..d700a93f94 100644 --- a/driver.h +++ b/driver.h @@ -484,6 +484,7 @@ typedef struct driver unsigned block_hotkey_until; bool block_input; bool block_libretro_input; + unsigned block_libretro_input_until; bool nonblock_state; /* Opaque handles to currently running window. diff --git a/libretro_version_1.c b/libretro_version_1.c index 254b3f1fd9..0c9bd373cb 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -181,8 +181,11 @@ static int16_t input_state(unsigned port, unsigned device, g_settings.input.binds[15], }; - if (!driver.block_libretro_input && (id < RARCH_FIRST_META_KEY || - device == RETRO_DEVICE_KEYBOARD)) + if (!driver.block_libretro_input && + ((id < RARCH_FIRST_META_KEY || + device == RETRO_DEVICE_KEYBOARD) && + (g_extern.frame_count > driver.block_libretro_input_until)) + ) res = driver.input->input_state(driver.input_data, binds, port, device, index, id); diff --git a/retroarch.c b/retroarch.c index 33cdba48b7..4c36b6708f 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2866,10 +2866,7 @@ void rarch_main_set_state(unsigned cmd) rarch_main_set_state(RARCH_ACTION_STATE_QUIT); break; case RARCH_ACTION_STATE_FLUSH_INPUT: - driver.retro_ctx.poll_cb(); -#ifdef HAVE_MENU - menu_input(); -#endif + driver.block_libretro_input_until = g_extern.frame_count + (5); /* Restore libretro keyboard callback. */ g_extern.system.key_event = g_extern.frontend_key_event; break;