From 24bafd7ab952f69baa34ea05bebbfd094982bf77 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 13 Feb 2016 07:36:45 +0100 Subject: [PATCH] Create RARCH_INPUT_CTL_GRAB_MOUSE --- command_event.c | 2 +- input/input_driver.c | 42 +++++++++++++++++++++++------------------- input/input_driver.h | 5 ++--- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/command_event.c b/command_event.c index 86df745828..307ca12cef 100644 --- a/command_event.c +++ b/command_event.c @@ -1635,7 +1635,7 @@ bool event_cmd_ctl(enum event_command cmd, void *data) grab_mouse_state = !grab_mouse_state; - if (!input_driver_grab_mouse(grab_mouse_state)) + if (!input_driver_ctl(RARCH_INPUT_CTL_GRAB_MOUSE, &grab_mouse_state)) return false; RARCH_LOG("%s: %s.\n", diff --git a/input/input_driver.c b/input/input_driver.c index 67ed4116b6..005bdc8d2a 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -165,10 +165,10 @@ const input_driver_t **input_get_double_ptr(void) bool input_driver_set_rumble_state(unsigned port, enum retro_rumble_effect effect, uint16_t strength) { - if (current_input->set_rumble) - return current_input->set_rumble(current_input_data, - port, effect, strength); - return false; + if (!current_input || !current_input->set_rumble) + return false; + return current_input->set_rumble(current_input_data, + port, effect, strength); } int16_t input_driver_state(const struct retro_keybind **retro_keybinds, @@ -180,33 +180,28 @@ int16_t input_driver_state(const struct retro_keybind **retro_keybinds, const input_device_driver_t *input_driver_get_joypad_driver(void) { - if (current_input->get_joypad_driver) - return current_input->get_joypad_driver(current_input_data); - return NULL; + if (!current_input || !current_input->get_joypad_driver) + return NULL; + return current_input->get_joypad_driver(current_input_data); } const input_device_driver_t *input_driver_get_sec_joypad_driver(void) { - if (current_input->get_sec_joypad_driver) - return current_input->get_sec_joypad_driver(current_input_data); - return NULL; + if (!current_input || !current_input->get_sec_joypad_driver) + return NULL; + return current_input->get_sec_joypad_driver(current_input_data); } uint64_t input_driver_get_capabilities(void) { - if (current_input->get_capabilities) - return current_input->get_capabilities(current_input_data); - return 0; + if (!current_input || !current_input->get_capabilities) + return 0; + return current_input->get_capabilities(current_input_data); } bool input_driver_grab_mouse(bool state) { - if (current_input->grab_mouse) - { - current_input->grab_mouse(current_input_data, state); - return true; - } - return false; + return true; } void input_driver_set(const input_driver_t **input, void **input_data) @@ -843,6 +838,15 @@ bool input_driver_ctl(enum rarch_input_ctl_state state, void *data) } #endif break; + case RARCH_INPUT_CTL_GRAB_MOUSE: + { + bool *bool_data = (bool*)data; + if (!current_input || !current_input->grab_mouse) + return false; + + current_input->grab_mouse(current_input_data, *bool_data); + } + break; case RARCH_INPUT_CTL_NONE: default: break; diff --git a/input/input_driver.h b/input/input_driver.h index 7872541a1d..d7c695745d 100644 --- a/input/input_driver.h +++ b/input/input_driver.h @@ -82,7 +82,8 @@ enum rarch_input_ctl_state RARCH_INPUT_CTL_COMMAND_DEINIT, RARCH_INPUT_CTL_REMOTE_INIT, RARCH_INPUT_CTL_REMOTE_DEINIT, - RARCH_INPUT_CTL_KEY_PRESSED + RARCH_INPUT_CTL_KEY_PRESSED, + RARCH_INPUT_CTL_GRAB_MOUSE }; struct retro_keybind @@ -198,8 +199,6 @@ const input_device_driver_t * input_driver_get_joypad_driver(void); const input_device_driver_t * input_driver_get_sec_joypad_driver(void); -bool input_driver_grab_mouse(bool state); - void input_driver_keyboard_mapping_set_block(bool value); void input_driver_set(const input_driver_t **input, void **input_data);