diff --git a/general.h b/general.h index 4364650ea0..344730dc4d 100644 --- a/general.h +++ b/general.h @@ -163,6 +163,7 @@ enum basic_event RARCH_CMD_DISK_NEXT, RARCH_CMD_DISK_PREV, RARCH_CMD_RUMBLE_STOP, + RARCH_CMD_GRAB_MOUSE_TOGGLE, }; enum action_state diff --git a/retroarch.c b/retroarch.c index a826b0cb86..c1196926bc 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2680,6 +2680,23 @@ bool rarch_main_command(unsigned cmd) } } break; + case RARCH_CMD_GRAB_MOUSE_TOGGLE: + { + static bool grab_mouse_state = false; + + if (!driver.input || !driver.input->grab_mouse) + return false; + + grab_mouse_state = !grab_mouse_state; + RARCH_LOG("Grab mouse state: %s.\n", + grab_mouse_state ? "yes" : "no"); + driver.input->grab_mouse(driver.input_data, grab_mouse_state); + + if (driver.video_poke && driver.video_poke->show_mouse) + driver.video_poke->show_mouse( + driver.video_data, !grab_mouse_state); + } + break; } return true; diff --git a/runloop.c b/runloop.c index 1a1bd1dce7..a020023a76 100644 --- a/runloop.c +++ b/runloop.c @@ -40,21 +40,6 @@ static void set_volume(float gain) g_extern.audio_data.volume_gain = db_to_gain(g_settings.audio.volume); } -static void check_grab_mouse_toggle(void) -{ - static bool grab_mouse_state = false; - - if (!driver.input->grab_mouse) - return; - - grab_mouse_state = !grab_mouse_state; - RARCH_LOG("Grab mouse state: %s.\n", grab_mouse_state ? "yes" : "no"); - driver.input->grab_mouse(driver.input_data, grab_mouse_state); - - if (driver.video_poke && driver.video_poke->show_mouse) - driver.video_poke->show_mouse(driver.video_data, !grab_mouse_state); -} - #ifdef HAVE_NETPLAY static void check_netplay_flip(bool pressed, bool fullscreen_toggle_pressed) { @@ -397,7 +382,7 @@ static int do_state_checks( set_volume(-0.5f); if (BIT64_GET(trigger_input, RARCH_GRAB_MOUSE_TOGGLE)) - check_grab_mouse_toggle(); + rarch_main_command(RARCH_CMD_GRAB_MOUSE_TOGGLE); #ifdef HAVE_OVERLAY if (BIT64_GET(trigger_input, RARCH_OVERLAY_NEXT))