static int16_t sdl_input_state(void *data_, const struct retro_keybind **binds, unsigned port, unsigned device, unsigned idx, unsigned id) { enum input_device_type type = INPUT_DEVICE_TYPE_NONE; sdl_input_t *data = (sdl_input_t*)data_; switch (device) { case RETRO_DEVICE_JOYPAD: return sdl_joypad_device_state(data, binds, port, id, &type); case RETRO_DEVICE_ANALOG: return sdl_analog_device_state(data, binds, port, idx, id); case RETRO_DEVICE_MOUSE: return sdl_mouse_device_state(data, id); case RETRO_DEVICE_POINTER: case RARCH_DEVICE_POINTER_SCREEN: return sdl_pointer_device_state(data, idx, id, device == RARCH_DEVICE_POINTER_SCREEN); case RETRO_DEVICE_KEYBOARD: return sdl_keyboard_device_state(data, id); case RETRO_DEVICE_LIGHTGUN: return sdl_lightgun_device_state(data, id); } return 0; }
static int16_t sdl_input_state(void *data, rarch_joypad_info_t joypad_info, const struct retro_keybind **binds, unsigned port, unsigned device, unsigned idx, unsigned id) { enum input_device_type type = INPUT_DEVICE_TYPE_NONE; sdl_input_t *sdl = (sdl_input_t*)data; switch (device) { case RETRO_DEVICE_JOYPAD: if (id < RARCH_BIND_LIST_END) return sdl_joypad_device_state(sdl, joypad_info, binds[port], port, id, &type); break; case RETRO_DEVICE_ANALOG: if (binds[port]) { int16_t ret = sdl_analog_pressed(sdl, binds[port], idx, id); if (!ret) ret = input_joypad_analog(sdl->joypad, joypad_info, port, idx, id, binds[port]); return ret; } break; case RETRO_DEVICE_MOUSE: return sdl_mouse_device_state(sdl, id); case RETRO_DEVICE_POINTER: case RARCH_DEVICE_POINTER_SCREEN: if (idx == 0) return sdl_pointer_device_state(sdl, idx, id, device == RARCH_DEVICE_POINTER_SCREEN); break; case RETRO_DEVICE_KEYBOARD: return (id < RETROK_LAST) && sdl_key_pressed(id); case RETRO_DEVICE_LIGHTGUN: return sdl_lightgun_device_state(sdl, id); } return 0; }