diff --git a/input/drivers/cocoa_input.c b/input/drivers/cocoa_input.c index 1fd403e137..a93d78cf12 100644 --- a/input/drivers/cocoa_input.c +++ b/input/drivers/cocoa_input.c @@ -333,10 +333,10 @@ static void *cocoa_input_init(const char *joypad_driver) return apple; } -static void cocoa_input_poll(void *data) +static void cocoa_input_poll(void *data, const void *joypad_data) { uint32_t i; - cocoa_input_data_t *apple = (cocoa_input_data_t*)data; + cocoa_input_data_t *apple = (cocoa_input_data_t*)data; #ifndef IOS float backing_scale_factor = get_backing_scale_factor(); #endif diff --git a/input/drivers/dinput.c b/input/drivers/dinput.c index 1ea410e7d4..191b4df0c1 100644 --- a/input/drivers/dinput.c +++ b/input/drivers/dinput.c @@ -190,7 +190,7 @@ static void *dinput_init(const char *joypad_driver) return di; } -static void dinput_poll(void *data) +static void dinput_poll(void *data, const void *joypad_data) { struct dinput_input *di = (struct dinput_input*)data; uint8_t *kb_state = NULL; diff --git a/input/drivers/gx_input.c b/input/drivers/gx_input.c index 19e3ddb7d8..5ff4a652a3 100644 --- a/input/drivers/gx_input.c +++ b/input/drivers/gx_input.c @@ -232,7 +232,7 @@ static INLINE int rvl_count_mouse(gx_input_t *gx) return count; } -static void rvl_input_poll(void *data) +static void rvl_input_poll(void *data, const void *joypad_data) { gx_input_t *gx = (gx_input_t*)data; if (gx && gx->mouse) diff --git a/input/drivers/linuxraw_input.c b/input/drivers/linuxraw_input.c index b5c0750a44..7ae2259c3b 100644 --- a/input/drivers/linuxraw_input.c +++ b/input/drivers/linuxraw_input.c @@ -190,7 +190,7 @@ static bool linuxraw_set_rumble( return false; } -static void linuxraw_input_poll(void *data) +static void linuxraw_input_poll(void *data, const void *joypad_data) { uint8_t c; linuxraw_input_t *linuxraw = (linuxraw_input_t*)data; diff --git a/input/drivers/ps3_input.c b/input/drivers/ps3_input.c index 2e97a3778f..5c56348caf 100644 --- a/input/drivers/ps3_input.c +++ b/input/drivers/ps3_input.c @@ -54,7 +54,7 @@ typedef struct ps3_input } ps3_input_t; #ifdef HAVE_MOUSE -static void ps3_input_poll(void *data) +static void ps3_input_poll(void *data, const void *joypad_data) { CellMouseInfo mouse_info; ps3_input_t *ps3 = (ps3_input_t*)data; diff --git a/input/drivers/psl1ght_input.c b/input/drivers/psl1ght_input.c index 0f604762ae..7b3af5747f 100644 --- a/input/drivers/psl1ght_input.c +++ b/input/drivers/psl1ght_input.c @@ -82,7 +82,7 @@ static void ps3_disconnect_keyboard(ps3_input_t *ps3, int port) ps3->connected[port] = 0; } -static void ps3_input_poll(void *data) +static void ps3_input_poll(void *data, const void *joypad_data) { unsigned i, j; ps3_input_t *ps3 = (ps3_input_t*)data; diff --git a/input/drivers/psp_input.c b/input/drivers/psp_input.c index 237279ce91..691ad153c7 100644 --- a/input/drivers/psp_input.c +++ b/input/drivers/psp_input.c @@ -88,7 +88,7 @@ typedef struct psp_input bool sensors_enabled; } psp_input_t; -static void vita_input_poll(void *data) +static void vita_input_poll(void *data, const void *joypad_data) { psp_input_t *psp = (psp_input_t*)data; unsigned int i = 0; diff --git a/input/drivers/qnx_input.c b/input/drivers/qnx_input.c index 708f38c2b8..e0736c430c 100644 --- a/input/drivers/qnx_input.c +++ b/input/drivers/qnx_input.c @@ -705,7 +705,7 @@ static void *qnx_input_init(const char *joypad_driver) return qnx; } -static void qnx_input_poll(void *data) +static void qnx_input_poll(void *data, const void *joypad_data) { qnx_input_t *qnx = (qnx_input_t*)data; diff --git a/input/drivers/rwebinput_input.c b/input/drivers/rwebinput_input.c index fc4fd74f19..72a577b411 100644 --- a/input/drivers/rwebinput_input.c +++ b/input/drivers/rwebinput_input.c @@ -650,7 +650,7 @@ static void rwebinput_process_keyboard_events( rwebinput->keys[translated_keycode] = keydown; } -static void rwebinput_input_poll(void *data) +static void rwebinput_input_poll(void *data, const void *joypad_data) { size_t i; rwebinput_input_t *rwebinput = (rwebinput_input_t*)data; diff --git a/input/drivers/sdl_input.c b/input/drivers/sdl_input.c index 503bba08f3..5e406139cd 100644 --- a/input/drivers/sdl_input.c +++ b/input/drivers/sdl_input.c @@ -328,7 +328,7 @@ static void sdl_poll_mouse(sdl_input_t *sdl) #endif } -static void sdl_input_poll(void *data) +static void sdl_input_poll(void *data, const void *joypad_data) { SDL_Event event; sdl_input_t *sdl = (sdl_input_t*)data; diff --git a/input/drivers/switch_input.c b/input/drivers/switch_input.c index 96d641c76f..3b342d8d5e 100644 --- a/input/drivers/switch_input.c +++ b/input/drivers/switch_input.c @@ -148,7 +148,7 @@ static void finish_simulated_mouse_clicks(switch_input_t *sw, uint64_t currentTi #endif #ifdef HAVE_LIBNX -static void switch_input_poll(void *data) +static void switch_input_poll(void *data, const void *joypad_data) { MousePosition mouse_pos; unsigned int i = 0; diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c index 83f4b87aef..ded146413f 100644 --- a/input/drivers/udev_input.c +++ b/input/drivers/udev_input.c @@ -704,7 +704,7 @@ static bool udev_input_poll_hotplug_available(struct udev_monitor *dev) return (poll(&fds, 1, 0) == 1) && (fds.revents & POLLIN); } -static void udev_input_poll(void *data) +static void udev_input_poll(void *data, const void *joypad_data) { int i, ret; #if defined(HAVE_EPOLL) diff --git a/input/drivers/uwp_input.c b/input/drivers/uwp_input.c index c016963e94..c5e08a4ac1 100644 --- a/input/drivers/uwp_input.c +++ b/input/drivers/uwp_input.c @@ -34,7 +34,7 @@ typedef struct uwp_input void *empty; } uwp_input_t; -static void uwp_input_poll(void *data) +static void uwp_input_poll(void *data, const void *joypad_data) { uwp_input_next_frame(); } diff --git a/input/drivers/wayland_input.c b/input/drivers/wayland_input.c index 61956f82a5..ee59041f02 100644 --- a/input/drivers/wayland_input.c +++ b/input/drivers/wayland_input.c @@ -64,7 +64,7 @@ static bool wayland_context_gettouchpos( return wl->active_touch_positions[id].active; } -static void input_wl_poll(void *data) +static void input_wl_poll(void *data, const void *joypad_data) { int id; unsigned touch_x = 0; diff --git a/input/drivers/winraw_input.c b/input/drivers/winraw_input.c index 22efb7ecf8..f00cc15ceb 100644 --- a/input/drivers/winraw_input.c +++ b/input/drivers/winraw_input.c @@ -505,10 +505,10 @@ error: return NULL; } -static void winraw_poll(void *d) +static void winraw_poll(void *data, const void *joypad_data) { unsigned i; - winraw_input_t *wr = (winraw_input_t*)d; + winraw_input_t *wr = (winraw_input_t*)data; memcpy(&wr->keyboard, g_keyboard, sizeof(winraw_keyboard_t)); diff --git a/input/drivers/x11_input.c b/input/drivers/x11_input.c index 77a836d195..ae2d59723b 100644 --- a/input/drivers/x11_input.c +++ b/input/drivers/x11_input.c @@ -641,7 +641,7 @@ static void x_input_free(void *data) free(x11); } -static void x_input_poll(void *data) +static void x_input_poll(void *data, const void *joypad_data) { unsigned mask; int root_x, root_y, win_x, win_y; diff --git a/input/drivers/xenon360_input.c b/input/drivers/xenon360_input.c index aec38e24ee..fd0bfaa5df 100644 --- a/input/drivers/xenon360_input.c +++ b/input/drivers/xenon360_input.c @@ -33,7 +33,7 @@ /* TODO/FIXME - static global variable */ static uint64_t state[DEFAULT_MAX_PADS]; -static void xenon360_input_poll(void *data) +static void xenon360_input_poll(void *data, const void *joypad_data) { unsigned i; diff --git a/input/input_driver.h b/input/input_driver.h index ecde7f4ee8..1b755cfbc8 100644 --- a/input/input_driver.h +++ b/input/input_driver.h @@ -173,7 +173,7 @@ struct input_driver void *(*init)(const char *joypad_driver); /* Polls input. Called once every frame. */ - void (*poll)(void *data); + void (*poll)(void *data, const void *joypad_data); /* Queries input state for a certain key on a certain player. * Players are 1 - MAX_USERS. diff --git a/retroarch.c b/retroarch.c index fd590de87d..775500823d 100644 --- a/retroarch.c +++ b/retroarch.c @@ -675,7 +675,7 @@ static const gfx_ctx_driver_t *gfx_ctx_gl_drivers[] = { }; static void *input_null_init(const char *joypad_driver) { return (void*)-1; } -static void input_null_poll(void *data) { } +static void input_null_poll(void *data, const void *joypad_data) { } static int16_t input_null_input_state( void *data, const input_device_driver_t *joypad, @@ -15443,7 +15443,8 @@ static void command_event_reinit(struct rarch_state *p_rarch, if (p_rarch->sec_joypad->poll) p_rarch->sec_joypad->poll(); #endif - p_rarch->current_input->poll(p_rarch->current_input_data); + p_rarch->current_input->poll(p_rarch->current_input_data, + p_rarch->joypad); } command_event(CMD_EVENT_GAME_FOCUS_TOGGLE, (void*)(intptr_t)-1); @@ -23686,7 +23687,8 @@ static void input_driver_poll(void) if (p_rarch->sec_joypad->poll) p_rarch->sec_joypad->poll(); #endif - p_rarch->current_input->poll(p_rarch->current_input_data); + p_rarch->current_input->poll(p_rarch->current_input_data, + p_rarch->joypad); p_rarch->input_driver_turbo_btns.count++;