From db1087ad3322e3120d0dfb751c7a475277f40cd0 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 23 Mar 2015 03:04:05 +0100 Subject: [PATCH] Create input_driver_state --- gfx/video_state_python.c | 6 ++--- gfx/video_state_tracker.c | 10 +++---- input/input_driver.c | 10 +++++++ input/input_driver.h | 3 +++ libretro_version_1.c | 10 +++---- menu/menu_entries_cbs_iterate.c | 46 ++++++++++++++++----------------- menu/menu_input.c | 2 +- runloop.c | 7 ++--- 8 files changed, 49 insertions(+), 45 deletions(-) diff --git a/gfx/video_state_python.c b/gfx/video_state_python.c index 93d6a30a77..726e763652 100644 --- a/gfx/video_state_python.c +++ b/gfx/video_state_python.c @@ -124,8 +124,7 @@ static PyObject *py_read_input(PyObject *self, PyObject *args) return NULL; if (!driver->block_libretro_input) - res = driver->input->input_state(driver->input_data, - py_binds, user - 1, RETRO_DEVICE_JOYPAD, 0, key); + res = input_driver_state(py_binds, user - 1, RETRO_DEVICE_JOYPAD, 0, key); return PyBool_FromLong(res); } @@ -165,8 +164,7 @@ static PyObject *py_read_analog(PyObject *self, PyObject *args) if (user > MAX_USERS || user < 1 || index > 1 || id > 1) return NULL; - res = driver->input->input_state(driver->input_data, - py_binds, user - 1, RETRO_DEVICE_ANALOG, index, id); + res = input_driver_state(py_binds, user - 1, RETRO_DEVICE_ANALOG, index, id); return PyFloat_FromDouble((double)res / 0x7fff); } diff --git a/gfx/video_state_tracker.c b/gfx/video_state_tracker.c index 2189b58f4a..05af2fcca9 100644 --- a/gfx/video_state_tracker.c +++ b/gfx/video_state_tracker.c @@ -297,12 +297,10 @@ static void state_tracker_update_input(state_tracker_t *tracker) { for (i = 4; i < 16; i++) { - state[0] |= (driver->input->input_state( - driver->input_data, binds, 0, - RETRO_DEVICE_JOYPAD, 0, buttons[i - 4]) ? 1 : 0) << i; - state[1] |= (driver->input->input_state( - driver->input_data, binds, 1, - RETRO_DEVICE_JOYPAD, 0, buttons[i - 4]) ? 1 : 0) << i; + state[0] |= (input_driver_state( + binds, 0, RETRO_DEVICE_JOYPAD, 0, buttons[i - 4]) ? 1 : 0) << i; + state[1] |= (input_driver_state( + binds, 1, RETRO_DEVICE_JOYPAD, 0, buttons[i - 4]) ? 1 : 0) << i; } } diff --git a/input/input_driver.c b/input/input_driver.c index 5f1227fe97..ed6789b100 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -214,3 +214,13 @@ retro_input_t input_driver_keys_pressed(void) } return ret; } + +int16_t input_driver_state(const struct retro_keybind **retro_keybinds, + unsigned port, unsigned device, unsigned index, unsigned id) +{ + driver_t *driver = driver_get_ptr(); + if (driver->input && driver->input_data && driver->input->set_rumble) + return driver->input->input_state(driver->input_data, retro_keybinds, + port, device, index, id); + return 0; +} diff --git a/input/input_driver.h b/input/input_driver.h index f62e452502..0a64a994ef 100644 --- a/input/input_driver.h +++ b/input/input_driver.h @@ -137,6 +137,9 @@ bool input_driver_set_rumble_state(unsigned port, retro_input_t input_driver_keys_pressed(void); +int16_t input_driver_state(const struct retro_keybind **retro_keybinds, + unsigned port, unsigned device, unsigned index, unsigned id); + #ifdef __cplusplus } #endif diff --git a/libretro_version_1.c b/libretro_version_1.c index f7d65913ac..3f0144960c 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -446,8 +446,7 @@ static int16_t input_state(unsigned port, unsigned device, if (!driver->block_libretro_input) { if (((id < RARCH_FIRST_META_KEY) || (device == RETRO_DEVICE_KEYBOARD))) - res = driver->input->input_state(driver->input_data, libretro_input_binds, port, - device, idx, id); + res = input_driver_state(libretro_input_binds, port, device, idx, id); #ifdef HAVE_OVERLAY if (port == 0) @@ -525,14 +524,13 @@ static INLINE void input_poll_overlay(input_overlay_t *overlay_device, float opa RARCH_DEVICE_POINTER_SCREEN : RETRO_DEVICE_POINTER; for (i = 0; - driver->input->input_state(driver->input_data, NULL, 0, device, i, - RETRO_DEVICE_ID_POINTER_PRESSED); + input_driver_state(NULL, 0, device, i, RETRO_DEVICE_ID_POINTER_PRESSED); i++) { input_overlay_state_t polled_data; - int16_t x = driver->input->input_state(driver->input_data, NULL, 0, + int16_t x = input_driver_state(NULL, 0, device, i, RETRO_DEVICE_ID_POINTER_X); - int16_t y = driver->input->input_state(driver->input_data, NULL, 0, + int16_t y = input_driver_state(NULL, 0, device, i, RETRO_DEVICE_ID_POINTER_Y); input_overlay_poll(overlay_device, &polled_data, x, y); diff --git a/menu/menu_entries_cbs_iterate.c b/menu/menu_entries_cbs_iterate.c index 9fc7d6605c..918e095ffc 100644 --- a/menu/menu_entries_cbs_iterate.c +++ b/menu/menu_entries_cbs_iterate.c @@ -609,36 +609,36 @@ static int mouse_iterate(unsigned *action) return 0; } - menu->mouse.left = driver->input->input_state(driver->input_data, - binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_LEFT); - menu->mouse.right = driver->input->input_state(driver->input_data, - binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_RIGHT); - menu->mouse.wheelup = driver->input->input_state(driver->input_data, - binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_WHEELUP); - menu->mouse.wheeldown = driver->input->input_state(driver->input_data, - binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_WHEELDOWN); - menu->mouse.hwheelup = driver->input->input_state(driver->input_data, - binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP); - menu->mouse.hwheeldown = driver->input->input_state(driver->input_data, - binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELDOWN); - menu->mouse.dx = driver->input->input_state(driver->input_data, - binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_X); - menu->mouse.dy = driver->input->input_state(driver->input_data, - binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_Y); + menu->mouse.left = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE, + 0, RETRO_DEVICE_ID_MOUSE_LEFT); + menu->mouse.right = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE, + 0, RETRO_DEVICE_ID_MOUSE_RIGHT); + menu->mouse.wheelup = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE, + 0, RETRO_DEVICE_ID_MOUSE_WHEELUP); + menu->mouse.wheeldown = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE, + 0, RETRO_DEVICE_ID_MOUSE_WHEELDOWN); + menu->mouse.hwheelup = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE, + 0, RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP); + menu->mouse.hwheeldown = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE, + 0, RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELDOWN); + menu->mouse.dx = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE, + 0, RETRO_DEVICE_ID_MOUSE_X); + menu->mouse.dy = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE, + 0, RETRO_DEVICE_ID_MOUSE_Y); - menu->mouse.x += menu->mouse.dx; - menu->mouse.y += menu->mouse.dy; + menu->mouse.x += menu->mouse.dx; + menu->mouse.y += menu->mouse.dy; if (menu->mouse.x < 5) - menu->mouse.x = 5; + menu->mouse.x = 5; if (menu->mouse.y < 5) - menu->mouse.y = 5; + menu->mouse.y = 5; if (menu->mouse.x > (int)menu->frame_buf.width - 5) - menu->mouse.x = menu->frame_buf.width - 5; + menu->mouse.x = menu->frame_buf.width - 5; if (menu->mouse.y > (int)menu->frame_buf.height - 5) - menu->mouse.y = menu->frame_buf.height - 5; + menu->mouse.y = menu->frame_buf.height - 5; - menu->mouse.scrollup = (menu->mouse.y == 5); + menu->mouse.scrollup = (menu->mouse.y == 5); menu->mouse.scrolldown = (menu->mouse.y == (int)menu->frame_buf.height - 5); if (menu->mouse.dx != 0 || menu->mouse.dy !=0 || menu->mouse.left diff --git a/menu/menu_input.c b/menu/menu_input.c index fdbcf01011..a802295bd1 100644 --- a/menu/menu_input.c +++ b/menu/menu_input.c @@ -205,7 +205,7 @@ void menu_input_poll_bind_state(struct menu_bind_state *state) return; memset(state->state, 0, sizeof(state->state)); - state->skip = driver->input->input_state(driver->input_data, NULL, 0, + state->skip = input_driver_state(NULL, 0, RETRO_DEVICE_KEYBOARD, 0, RETROK_RETURN); if (driver->input && driver->input_data && driver->input->get_joypad_driver) diff --git a/runloop.c b/runloop.c index aca9cf3191..e88162b2b9 100644 --- a/runloop.c +++ b/runloop.c @@ -864,11 +864,8 @@ static INLINE retro_input_t input_keys_pressed(void) if (!driver->block_libretro_input) { for (i = 0; i < settings->input.max_users; i++) - { - global->turbo_frame_enable[i] = - driver->input->input_state(driver->input_data, binds, i, - RETRO_DEVICE_JOYPAD, 0, RARCH_TURBO_ENABLE); - } + global->turbo_frame_enable[i] = input_driver_state(binds, + i, RETRO_DEVICE_JOYPAD, 0, RARCH_TURBO_ENABLE); } ret = input_driver_keys_pressed();