current_input_data and current_input are no longer globals

This commit is contained in:
twinaphex 2017-12-29 23:03:25 +01:00
parent ad7dd75458
commit a6afddae04
7 changed files with 47 additions and 34 deletions

View File

@ -1962,15 +1962,22 @@ bool command_event(enum event_command cmd, void *data)
case CMD_EVENT_REINIT_FROM_TOGGLE: case CMD_EVENT_REINIT_FROM_TOGGLE:
retroarch_unset_forced_fullscreen(); retroarch_unset_forced_fullscreen();
case CMD_EVENT_REINIT: case CMD_EVENT_REINIT:
{
video_driver_reinit(); video_driver_reinit();
{
const input_driver_t *input_drv = input_get_ptr();
void *input_data = input_get_data();
/* Poll input to avoid possibly stale data to corrupt things. */ /* Poll input to avoid possibly stale data to corrupt things. */
input_driver_poll(); if (input_drv && input_drv->poll)
input_drv->poll(input_data);
}
command_event(CMD_EVENT_GAME_FOCUS_TOGGLE, (void*)(intptr_t)-1); command_event(CMD_EVENT_GAME_FOCUS_TOGGLE, (void*)(intptr_t)-1);
#ifdef HAVE_MENU #ifdef HAVE_MENU
menu_display_set_framebuffer_dirty_flag(); menu_display_set_framebuffer_dirty_flag();
if (menu_driver_is_alive()) if (menu_driver_is_alive())
command_event(CMD_EVENT_VIDEO_SET_BLOCKING_STATE, NULL); command_event(CMD_EVENT_VIDEO_SET_BLOCKING_STATE, NULL);
#endif #endif
}
break; break;
case CMD_EVENT_CHEATS_DEINIT: case CMD_EVENT_CHEATS_DEINIT:
cheat_manager_state_free(); cheat_manager_state_free();

View File

@ -372,8 +372,8 @@ static input_remote_t *input_driver_remote = NULL;
#ifdef HAVE_KEYMAPPER #ifdef HAVE_KEYMAPPER
static input_mapper_t *input_driver_mapper = NULL; static input_mapper_t *input_driver_mapper = NULL;
#endif #endif
const input_driver_t *current_input = NULL; static const input_driver_t *current_input = NULL;
void *current_input_data = NULL; static void *current_input_data = NULL;
static bool input_driver_block_hotkey = false; static bool input_driver_block_hotkey = false;
static bool input_driver_block_libretro_input = false; static bool input_driver_block_libretro_input = false;
static bool input_driver_nonblock_state = false; static bool input_driver_nonblock_state = false;
@ -450,6 +450,11 @@ const char* config_get_input_driver_options(void)
return char_list_new_special(STRING_LIST_INPUT_DRIVERS, NULL); return char_list_new_special(STRING_LIST_INPUT_DRIVERS, NULL);
} }
void *input_get_data(void)
{
return current_input_data;
}
const input_driver_t *input_get_ptr(void) const input_driver_t *input_get_ptr(void)
{ {
return current_input; return current_input;
@ -1117,11 +1122,6 @@ bool input_driver_has_capabilities(void)
return true; return true;
} }
void input_driver_poll(void)
{
current_input->poll(current_input_data);
}
bool input_driver_init(void) bool input_driver_init(void)
{ {
if (current_input) if (current_input)

View File

@ -196,9 +196,6 @@ struct hid_driver
const char *ident; const char *ident;
}; };
extern const input_driver_t *current_input;
extern void *current_input_data;
/** /**
* input_driver_find_handle: * input_driver_find_handle:
* @index : index of driver to get handle to. * @index : index of driver to get handle to.
@ -344,14 +341,14 @@ void *input_driver_get_data(void);
const input_driver_t *input_get_ptr(void); const input_driver_t *input_get_ptr(void);
void *input_get_data(void);
const input_driver_t **input_get_double_ptr(void); const input_driver_t **input_get_double_ptr(void);
void **input_driver_get_data_ptr(void); void **input_driver_get_data_ptr(void);
bool input_driver_has_capabilities(void); bool input_driver_has_capabilities(void);
void input_driver_poll(void);
bool input_driver_init(void); bool input_driver_init(void);
void input_driver_deinit(void); void input_driver_deinit(void);

View File

@ -577,7 +577,9 @@ void input_poll_overlay(input_overlay_t *ol, float opacity, unsigned analog_dpad
uint16_t key_mod = 0; uint16_t key_mod = 0;
bool polled = false; bool polled = false;
bool button_pressed = false; bool button_pressed = false;
void *input_data = input_get_data();
input_overlay_state_t *ol_state = &ol->overlay_state; input_overlay_state_t *ol_state = &ol->overlay_state;
const input_driver_t *input_ptr = input_get_ptr();
if (!ol_state) if (!ol_state)
return; return;
@ -594,16 +596,16 @@ void input_poll_overlay(input_overlay_t *ol, float opacity, unsigned analog_dpad
RARCH_DEVICE_POINTER_SCREEN : RETRO_DEVICE_POINTER; RARCH_DEVICE_POINTER_SCREEN : RETRO_DEVICE_POINTER;
for (i = 0; for (i = 0;
current_input->input_state(current_input_data, joypad_info, input_ptr->input_state(input_data, joypad_info,
NULL, NULL,
0, device, i, RETRO_DEVICE_ID_POINTER_PRESSED); 0, device, i, RETRO_DEVICE_ID_POINTER_PRESSED);
i++) i++)
{ {
input_overlay_state_t polled_data; input_overlay_state_t polled_data;
int16_t x = current_input->input_state(current_input_data, joypad_info, int16_t x = input_ptr->input_state(input_data, joypad_info,
NULL, NULL,
0, device, i, RETRO_DEVICE_ID_POINTER_X); 0, device, i, RETRO_DEVICE_ID_POINTER_X);
int16_t y = current_input->input_state(current_input_data, joypad_info, int16_t y = input_ptr->input_state(input_data, joypad_info,
NULL, NULL,
0, device, i, RETRO_DEVICE_ID_POINTER_Y); 0, device, i, RETRO_DEVICE_ID_POINTER_Y);

View File

@ -49,6 +49,8 @@ static int menu_event_pointer(unsigned *action)
size_t fb_pitch; size_t fb_pitch;
unsigned fb_width, fb_height; unsigned fb_width, fb_height;
const struct retro_keybind *binds[MAX_USERS] = {NULL}; const struct retro_keybind *binds[MAX_USERS] = {NULL};
const input_driver_t *input_ptr = input_get_ptr();
void *input_data = input_get_data();
menu_input_t *menu_input = menu_input_get_ptr(); menu_input_t *menu_input = menu_input_get_ptr();
int pointer_device = menu_driver_is_texture_set() int pointer_device = menu_driver_is_texture_set()
? ?
@ -62,21 +64,21 @@ static int menu_event_pointer(unsigned *action)
joypad_info.axis_threshold = 0.0f; joypad_info.axis_threshold = 0.0f;
pointer_x = pointer_x =
current_input->input_state(current_input_data, joypad_info, binds, input_ptr->input_state(input_data, joypad_info, binds,
0, pointer_device, 0, RETRO_DEVICE_ID_POINTER_X); 0, pointer_device, 0, RETRO_DEVICE_ID_POINTER_X);
pointer_y = pointer_y =
current_input->input_state(current_input_data, joypad_info, binds, input_ptr->input_state(input_data, joypad_info, binds,
0, pointer_device, 0, RETRO_DEVICE_ID_POINTER_Y); 0, pointer_device, 0, RETRO_DEVICE_ID_POINTER_Y);
menu_input->pointer.pressed[0] = current_input->input_state(current_input_data, menu_input->pointer.pressed[0] = input_ptr->input_state(input_data,
joypad_info, joypad_info,
binds, binds,
0, pointer_device, 0, RETRO_DEVICE_ID_POINTER_PRESSED); 0, pointer_device, 0, RETRO_DEVICE_ID_POINTER_PRESSED);
menu_input->pointer.pressed[1] = current_input->input_state(current_input_data, menu_input->pointer.pressed[1] = input_ptr->input_state(input_data,
joypad_info, joypad_info,
binds, binds,
0, pointer_device, 1, RETRO_DEVICE_ID_POINTER_PRESSED); 0, pointer_device, 1, RETRO_DEVICE_ID_POINTER_PRESSED);
menu_input->pointer.back = current_input->input_state(current_input_data, menu_input->pointer.back = input_ptr->input_state(input_data,
joypad_info, joypad_info,
binds, binds,
0, pointer_device, 0, RARCH_DEVICE_ID_POINTER_BACK); 0, pointer_device, 0, RARCH_DEVICE_ID_POINTER_BACK);

View File

@ -365,6 +365,8 @@ int16_t menu_input_pointer_state(enum menu_input_pointer_state state)
int16_t menu_input_mouse_state(enum menu_input_mouse_state state) int16_t menu_input_mouse_state(enum menu_input_mouse_state state)
{ {
rarch_joypad_info_t joypad_info; rarch_joypad_info_t joypad_info;
const input_driver_t *input_ptr = input_get_ptr();
void *input_data = input_get_data();
unsigned type = 0; unsigned type = 0;
unsigned device = RETRO_DEVICE_MOUSE; unsigned device = RETRO_DEVICE_MOUSE;
@ -402,7 +404,7 @@ int16_t menu_input_mouse_state(enum menu_input_mouse_state state)
break; break;
} }
return current_input->input_state(current_input_data, joypad_info, return input_ptr->input_state(input_data, joypad_info,
NULL, 0, device, 0, type); NULL, 0, device, 0, type);
} }

View File

@ -210,6 +210,8 @@ static void menu_input_key_bind_poll_bind_state(
{ {
unsigned b; unsigned b;
rarch_joypad_info_t joypad_info; rarch_joypad_info_t joypad_info;
const input_driver_t *input_ptr = input_get_ptr();
void *input_data = input_get_data();
const input_device_driver_t *joypad = const input_device_driver_t *joypad =
input_driver_get_joypad_driver(); input_driver_get_joypad_driver();
const input_device_driver_t *sec_joypad = const input_device_driver_t *sec_joypad =
@ -229,7 +231,8 @@ static void menu_input_key_bind_poll_bind_state(
joypad_info.auto_binds = NULL; joypad_info.auto_binds = NULL;
joypad_info.axis_threshold = 0.0f; joypad_info.axis_threshold = 0.0f;
state->skip = timed_out || current_input->input_state(current_input_data, joypad_info, state->skip = timed_out || input_ptr->input_state(input_data,
joypad_info,
NULL, NULL,
0, RETRO_DEVICE_KEYBOARD, 0, RETROK_RETURN); 0, RETRO_DEVICE_KEYBOARD, 0, RETROK_RETURN);