Create RARCH_INPUT_CTL_GRAB_MOUSE

This commit is contained in:
twinaphex 2016-02-13 07:36:45 +01:00
parent ac31eeb360
commit 24bafd7ab9
3 changed files with 26 additions and 23 deletions

View File

@ -1635,7 +1635,7 @@ bool event_cmd_ctl(enum event_command cmd, void *data)
grab_mouse_state = !grab_mouse_state; 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; return false;
RARCH_LOG("%s: %s.\n", RARCH_LOG("%s: %s.\n",

View File

@ -165,10 +165,10 @@ const input_driver_t **input_get_double_ptr(void)
bool input_driver_set_rumble_state(unsigned port, bool input_driver_set_rumble_state(unsigned port,
enum retro_rumble_effect effect, uint16_t strength) enum retro_rumble_effect effect, uint16_t strength)
{ {
if (current_input->set_rumble) if (!current_input || !current_input->set_rumble)
return current_input->set_rumble(current_input_data, return false;
port, effect, strength); return current_input->set_rumble(current_input_data,
return false; port, effect, strength);
} }
int16_t input_driver_state(const struct retro_keybind **retro_keybinds, 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) const input_device_driver_t *input_driver_get_joypad_driver(void)
{ {
if (current_input->get_joypad_driver) if (!current_input || !current_input->get_joypad_driver)
return current_input->get_joypad_driver(current_input_data); return NULL;
return NULL; return current_input->get_joypad_driver(current_input_data);
} }
const input_device_driver_t *input_driver_get_sec_joypad_driver(void) const input_device_driver_t *input_driver_get_sec_joypad_driver(void)
{ {
if (current_input->get_sec_joypad_driver) if (!current_input || !current_input->get_sec_joypad_driver)
return current_input->get_sec_joypad_driver(current_input_data); return NULL;
return NULL; return current_input->get_sec_joypad_driver(current_input_data);
} }
uint64_t input_driver_get_capabilities(void) uint64_t input_driver_get_capabilities(void)
{ {
if (current_input->get_capabilities) if (!current_input || !current_input->get_capabilities)
return current_input->get_capabilities(current_input_data); return 0;
return 0; return current_input->get_capabilities(current_input_data);
} }
bool input_driver_grab_mouse(bool state) bool input_driver_grab_mouse(bool state)
{ {
if (current_input->grab_mouse) return true;
{
current_input->grab_mouse(current_input_data, state);
return true;
}
return false;
} }
void input_driver_set(const input_driver_t **input, void **input_data) 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 #endif
break; 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: case RARCH_INPUT_CTL_NONE:
default: default:
break; break;

View File

@ -82,7 +82,8 @@ enum rarch_input_ctl_state
RARCH_INPUT_CTL_COMMAND_DEINIT, RARCH_INPUT_CTL_COMMAND_DEINIT,
RARCH_INPUT_CTL_REMOTE_INIT, RARCH_INPUT_CTL_REMOTE_INIT,
RARCH_INPUT_CTL_REMOTE_DEINIT, RARCH_INPUT_CTL_REMOTE_DEINIT,
RARCH_INPUT_CTL_KEY_PRESSED RARCH_INPUT_CTL_KEY_PRESSED,
RARCH_INPUT_CTL_GRAB_MOUSE
}; };
struct retro_keybind 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); 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_keyboard_mapping_set_block(bool value);
void input_driver_set(const input_driver_t **input, void **input_data); void input_driver_set(const input_driver_t **input, void **input_data);