Create input_driver_state

This commit is contained in:
twinaphex 2015-03-23 03:04:05 +01:00
parent c033546303
commit db1087ad33
8 changed files with 49 additions and 45 deletions

View File

@ -124,8 +124,7 @@ static PyObject *py_read_input(PyObject *self, PyObject *args)
return NULL; return NULL;
if (!driver->block_libretro_input) if (!driver->block_libretro_input)
res = driver->input->input_state(driver->input_data, res = input_driver_state(py_binds, user - 1, RETRO_DEVICE_JOYPAD, 0, key);
py_binds, user - 1, RETRO_DEVICE_JOYPAD, 0, key);
return PyBool_FromLong(res); 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) if (user > MAX_USERS || user < 1 || index > 1 || id > 1)
return NULL; return NULL;
res = driver->input->input_state(driver->input_data, res = input_driver_state(py_binds, user - 1, RETRO_DEVICE_ANALOG, index, id);
py_binds, user - 1, RETRO_DEVICE_ANALOG, index, id);
return PyFloat_FromDouble((double)res / 0x7fff); return PyFloat_FromDouble((double)res / 0x7fff);
} }

View File

@ -297,12 +297,10 @@ static void state_tracker_update_input(state_tracker_t *tracker)
{ {
for (i = 4; i < 16; i++) for (i = 4; i < 16; i++)
{ {
state[0] |= (driver->input->input_state( state[0] |= (input_driver_state(
driver->input_data, binds, 0, binds, 0, RETRO_DEVICE_JOYPAD, 0, buttons[i - 4]) ? 1 : 0) << i;
RETRO_DEVICE_JOYPAD, 0, buttons[i - 4]) ? 1 : 0) << i; state[1] |= (input_driver_state(
state[1] |= (driver->input->input_state( binds, 1, RETRO_DEVICE_JOYPAD, 0, buttons[i - 4]) ? 1 : 0) << i;
driver->input_data, binds, 1,
RETRO_DEVICE_JOYPAD, 0, buttons[i - 4]) ? 1 : 0) << i;
} }
} }

View File

@ -214,3 +214,13 @@ retro_input_t input_driver_keys_pressed(void)
} }
return ret; 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;
}

View File

@ -137,6 +137,9 @@ bool input_driver_set_rumble_state(unsigned port,
retro_input_t input_driver_keys_pressed(void); 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 #ifdef __cplusplus
} }
#endif #endif

View File

@ -446,8 +446,7 @@ static int16_t input_state(unsigned port, unsigned device,
if (!driver->block_libretro_input) if (!driver->block_libretro_input)
{ {
if (((id < RARCH_FIRST_META_KEY) || (device == RETRO_DEVICE_KEYBOARD))) if (((id < RARCH_FIRST_META_KEY) || (device == RETRO_DEVICE_KEYBOARD)))
res = driver->input->input_state(driver->input_data, libretro_input_binds, port, res = input_driver_state(libretro_input_binds, port, device, idx, id);
device, idx, id);
#ifdef HAVE_OVERLAY #ifdef HAVE_OVERLAY
if (port == 0) 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; RARCH_DEVICE_POINTER_SCREEN : RETRO_DEVICE_POINTER;
for (i = 0; for (i = 0;
driver->input->input_state(driver->input_data, NULL, 0, device, i, input_driver_state(NULL, 0, device, i, RETRO_DEVICE_ID_POINTER_PRESSED);
RETRO_DEVICE_ID_POINTER_PRESSED);
i++) i++)
{ {
input_overlay_state_t polled_data; 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); 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); device, i, RETRO_DEVICE_ID_POINTER_Y);
input_overlay_poll(overlay_device, &polled_data, x, y); input_overlay_poll(overlay_device, &polled_data, x, y);

View File

@ -609,36 +609,36 @@ static int mouse_iterate(unsigned *action)
return 0; return 0;
} }
menu->mouse.left = driver->input->input_state(driver->input_data, menu->mouse.left = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE,
binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_LEFT); 0, RETRO_DEVICE_ID_MOUSE_LEFT);
menu->mouse.right = driver->input->input_state(driver->input_data, menu->mouse.right = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE,
binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_RIGHT); 0, RETRO_DEVICE_ID_MOUSE_RIGHT);
menu->mouse.wheelup = driver->input->input_state(driver->input_data, menu->mouse.wheelup = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE,
binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_WHEELUP); 0, RETRO_DEVICE_ID_MOUSE_WHEELUP);
menu->mouse.wheeldown = driver->input->input_state(driver->input_data, menu->mouse.wheeldown = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE,
binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_WHEELDOWN); 0, RETRO_DEVICE_ID_MOUSE_WHEELDOWN);
menu->mouse.hwheelup = driver->input->input_state(driver->input_data, menu->mouse.hwheelup = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE,
binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP); 0, RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELUP);
menu->mouse.hwheeldown = driver->input->input_state(driver->input_data, menu->mouse.hwheeldown = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE,
binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELDOWN); 0, RETRO_DEVICE_ID_MOUSE_HORIZ_WHEELDOWN);
menu->mouse.dx = driver->input->input_state(driver->input_data, menu->mouse.dx = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE,
binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_X); 0, RETRO_DEVICE_ID_MOUSE_X);
menu->mouse.dy = driver->input->input_state(driver->input_data, menu->mouse.dy = input_driver_state(binds, 0, RETRO_DEVICE_MOUSE,
binds, 0, RETRO_DEVICE_MOUSE, 0, RETRO_DEVICE_ID_MOUSE_Y); 0, RETRO_DEVICE_ID_MOUSE_Y);
menu->mouse.x += menu->mouse.dx; menu->mouse.x += menu->mouse.dx;
menu->mouse.y += menu->mouse.dy; menu->mouse.y += menu->mouse.dy;
if (menu->mouse.x < 5) if (menu->mouse.x < 5)
menu->mouse.x = 5; menu->mouse.x = 5;
if (menu->mouse.y < 5) if (menu->mouse.y < 5)
menu->mouse.y = 5; menu->mouse.y = 5;
if (menu->mouse.x > (int)menu->frame_buf.width - 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) 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); menu->mouse.scrolldown = (menu->mouse.y == (int)menu->frame_buf.height - 5);
if (menu->mouse.dx != 0 || menu->mouse.dy !=0 || menu->mouse.left if (menu->mouse.dx != 0 || menu->mouse.dy !=0 || menu->mouse.left

View File

@ -205,7 +205,7 @@ void menu_input_poll_bind_state(struct menu_bind_state *state)
return; return;
memset(state->state, 0, sizeof(state->state)); 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); RETRO_DEVICE_KEYBOARD, 0, RETROK_RETURN);
if (driver->input && driver->input_data && driver->input->get_joypad_driver) if (driver->input && driver->input_data && driver->input->get_joypad_driver)

View File

@ -864,11 +864,8 @@ static INLINE retro_input_t input_keys_pressed(void)
if (!driver->block_libretro_input) if (!driver->block_libretro_input)
{ {
for (i = 0; i < settings->input.max_users; i++) for (i = 0; i < settings->input.max_users; i++)
{ global->turbo_frame_enable[i] = input_driver_state(binds,
global->turbo_frame_enable[i] = i, RETRO_DEVICE_JOYPAD, 0, RARCH_TURBO_ENABLE);
driver->input->input_state(driver->input_data, binds, i,
RETRO_DEVICE_JOYPAD, 0, RARCH_TURBO_ENABLE);
}
} }
ret = input_driver_keys_pressed(); ret = input_driver_keys_pressed();