Updates pt. 5

This commit is contained in:
twinaphex 2015-03-20 22:32:09 +01:00
parent 85d244d09a
commit 5ad9f131ce
13 changed files with 97 additions and 58 deletions

View File

@ -304,13 +304,14 @@ error:
static void *android_input_init(void) static void *android_input_init(void)
{ {
int32_t sdk; int32_t sdk;
settings_t *settings = config_get_ptr();
android_input_t *android = (android_input_t*)calloc(1, sizeof(*android)); android_input_t *android = (android_input_t*)calloc(1, sizeof(*android));
if (!android) if (!android)
return NULL; return NULL;
android->pads_connected = 0; android->pads_connected = 0;
android->joypad = input_joypad_init_driver(g_settings.input.joypad_driver); android->joypad = input_joypad_init_driver(settings->input.joypad_driver);
frontend_android_get_version_sdk(&sdk); frontend_android_get_version_sdk(&sdk);
@ -441,8 +442,9 @@ static void handle_hotplug(android_input_t *android,
char device_name[256], name_buf[256]; char device_name[256], name_buf[256];
name_buf[0] = device_name[0] = 0; name_buf[0] = device_name[0] = 0;
int vendorId = 0, productId = 0; int vendorId = 0, productId = 0;
settings_t *settings = config_get_ptr();
if (!g_settings.input.autodetect_enable) if (!settings->input.autodetect_enable)
return; return;
if (*port > MAX_PADS) if (*port > MAX_PADS)
@ -595,8 +597,8 @@ static void handle_hotplug(android_input_t *android,
if (name_buf[0] != '\0') if (name_buf[0] != '\0')
{ {
strlcpy(g_settings.input.device_names[*port], strlcpy(settings->input.device_names[*port],
name_buf, sizeof(g_settings.input.device_names[*port])); name_buf, sizeof(settings->input.device_names[*port]));
input_config_autoconfigure_joypad(*port, name_buf, input_config_autoconfigure_joypad(*port, name_buf,
vendorId, productId, vendorId, productId,
@ -744,13 +746,15 @@ static int16_t android_input_state(void *data,
static bool android_input_key_pressed(void *data, int key) static bool android_input_key_pressed(void *data, int key)
{ {
driver_t *driver = driver_get_ptr();
android_input_t *android = (android_input_t*)data; android_input_t *android = (android_input_t*)data;
driver_t *driver = driver_get_ptr();
settings_t *settings = config_get_ptr();
if (!android) if (!android)
return false; return false;
return ((g_extern.lifecycle_state | driver->overlay_state.buttons) return ((g_extern.lifecycle_state | driver->overlay_state.buttons)
& (1ULL << key)) || input_joypad_pressed(android->joypad, & (1ULL << key)) || input_joypad_pressed(android->joypad,
0, g_settings.input.binds[0], key); 0, settings->input.binds[0], key);
} }
static void android_input_free_input(void *data) static void android_input_free_input(void *data)

View File

@ -231,15 +231,14 @@ static int16_t apple_input_is_pressed(apple_input_data_t *apple, unsigned port_n
static void *apple_input_init(void) static void *apple_input_init(void)
{ {
apple_input_data_t *apple = NULL; settings_t *settings = config_get_ptr();
apple_input_data_t *apple = (apple_input_data_t*)calloc(1, sizeof(*apple));
apple = (apple_input_data_t*)calloc(1, sizeof(*apple));
if (!apple) if (!apple)
return NULL; return NULL;
input_keymaps_init_keyboard_lut(rarch_key_map_apple_hid); input_keymaps_init_keyboard_lut(rarch_key_map_apple_hid);
apple->joypad = input_joypad_init_driver(g_settings.input.joypad_driver); apple->joypad = input_joypad_init_driver(settings->input.joypad_driver);
return apple; return apple;
} }
@ -365,9 +364,10 @@ static int16_t apple_input_state(void *data,
static bool apple_input_bind_button_pressed(void *data, int key) static bool apple_input_bind_button_pressed(void *data, int key)
{ {
apple_input_data_t *apple = (apple_input_data_t*)data; apple_input_data_t *apple = (apple_input_data_t*)data;
settings_t *settings = config_get_ptr();
if (apple && apple->joypad) if (apple && apple->joypad)
return apple_input_is_pressed(apple, 0, g_settings.input.binds[0], key) || return apple_input_is_pressed(apple, 0, settings->input.binds[0], key) ||
input_joypad_pressed(apple->joypad, 0, g_settings.input.binds[0], key); input_joypad_pressed(apple->joypad, 0, settings->input.binds[0], key);
return false; return false;
} }

View File

@ -112,7 +112,8 @@ static bool dinput_init_context(void)
static void *dinput_init(void) static void *dinput_init(void)
{ {
struct dinput_input *di = NULL; struct dinput_input *di = NULL;
driver_t *driver = driver_get_ptr(); driver_t *driver = driver_get_ptr();
settings_t *settings = config_get_ptr();
if (!dinput_init_context()) if (!dinput_init_context())
{ {
@ -166,7 +167,7 @@ static void *dinput_init(void)
} }
input_keymaps_init_keyboard_lut(rarch_key_map_dinput); input_keymaps_init_keyboard_lut(rarch_key_map_dinput);
di->joypad = input_joypad_init_driver(g_settings.input.joypad_driver); di->joypad = input_joypad_init_driver(settings->input.joypad_driver);
return di; return di;
} }
@ -271,8 +272,9 @@ static int16_t dinput_pressed_analog(struct dinput_input *di,
static bool dinput_key_pressed(void *data, int key) static bool dinput_key_pressed(void *data, int key)
{ {
settings_t *settings = config_get_ptr();
return dinput_is_pressed((struct dinput_input*)data, return dinput_is_pressed((struct dinput_input*)data,
g_settings.input.binds[0], 0, key); settings->input.binds[0], 0, key);
} }
static int16_t dinput_lightgun_state(struct dinput_input *di, unsigned id) static int16_t dinput_lightgun_state(struct dinput_input *di, unsigned id)
@ -398,6 +400,7 @@ static int16_t dinput_input_state(void *data,
{ {
int16_t ret; int16_t ret;
struct dinput_input *di = (struct dinput_input*)data; struct dinput_input *di = (struct dinput_input*)data;
settings_t *settings = config_get_ptr();
switch (device) switch (device)
{ {
@ -411,7 +414,7 @@ static int16_t dinput_input_state(void *data,
ret = dinput_pressed_analog(di, binds[port], idx, id); ret = dinput_pressed_analog(di, binds[port], idx, id);
if (!ret) if (!ret)
ret = input_joypad_analog(di->joypad, port, ret = input_joypad_analog(di->joypad, port,
idx, id, g_settings.input.binds[port]); idx, id, settings->input.binds[port]);
return ret; return ret;
case RETRO_DEVICE_MOUSE: case RETRO_DEVICE_MOUSE:
@ -524,6 +527,7 @@ extern "C"
bool dinput_handle_message(void *dinput, UINT message, WPARAM wParam, LPARAM lParam) bool dinput_handle_message(void *dinput, UINT message, WPARAM wParam, LPARAM lParam)
{ {
struct dinput_input *di = (struct dinput_input *)dinput; struct dinput_input *di = (struct dinput_input *)dinput;
settings_t *settings = config_get_ptr();
/* WM_POINTERDOWN : Arrives for each new touch event /* WM_POINTERDOWN : Arrives for each new touch event
* with a new ID - add to list. * with a new ID - add to list.
* WM_POINTERUP : Arrives once the pointer is no * WM_POINTERUP : Arrives once the pointer is no
@ -568,7 +572,7 @@ bool dinput_handle_message(void *dinput, UINT message, WPARAM wParam, LPARAM lPa
{ {
if (di->joypad) if (di->joypad)
di->joypad->destroy(); di->joypad->destroy();
di->joypad = input_joypad_init_driver(g_settings.input.joypad_driver); di->joypad = input_joypad_init_driver(settings->input.joypad_driver);
break; break;
} }
case WM_MOUSEWHEEL: case WM_MOUSEWHEEL:
@ -588,6 +592,7 @@ bool dinput_handle_message(void *dinput, UINT message, WPARAM wParam, LPARAM lPa
} }
break; break;
} }
return false; return false;
} }
@ -691,6 +696,7 @@ bool g_xinput_block_pads;
static void dinput_joypad_destroy(void) static void dinput_joypad_destroy(void)
{ {
unsigned i; unsigned i;
settings_t *settings = config_get_ptr();
for (i = 0; i < MAX_USERS; i++) for (i = 0; i < MAX_USERS; i++)
{ {
@ -702,7 +708,7 @@ static void dinput_joypad_destroy(void)
free(g_pads[i].joy_name); free(g_pads[i].joy_name);
g_pads[i].joy_name = NULL; g_pads[i].joy_name = NULL;
*g_settings.input.device_names[i] = '\0'; *settings->input.device_names[i] = '\0';
} }
g_joypad_cnt = 0; g_joypad_cnt = 0;
@ -811,7 +817,8 @@ static BOOL CALLBACK enum_joypad_cb(const DIDEVICEINSTANCE *inst, void *p)
{ {
bool is_xinput_pad; bool is_xinput_pad;
LPDIRECTINPUTDEVICE8 *pad = NULL; LPDIRECTINPUTDEVICE8 *pad = NULL;
driver_t *driver = driver_get_ptr(); driver_t *driver = driver_get_ptr();
settings_t *settings = config_get_ptr();
(void)p; (void)p;
@ -858,9 +865,9 @@ static BOOL CALLBACK enum_joypad_cb(const DIDEVICEINSTANCE *inst, void *p)
if (!is_xinput_pad) if (!is_xinput_pad)
#endif #endif
{ {
strlcpy(g_settings.input.device_names[g_joypad_cnt], strlcpy(settings->input.device_names[g_joypad_cnt],
dinput_joypad_name(g_joypad_cnt), dinput_joypad_name(g_joypad_cnt),
sizeof(g_settings.input.device_names[g_joypad_cnt])); sizeof(settings->input.device_names[g_joypad_cnt]));
/* TODO - implement VID/PID? */ /* TODO - implement VID/PID? */
input_config_autoconfigure_joypad(g_joypad_cnt, input_config_autoconfigure_joypad(g_joypad_cnt,
dinput_joypad_name(g_joypad_cnt), 0, 0, dinput_joypad_name(g_joypad_cnt), 0, 0,

View File

@ -70,11 +70,12 @@ static void gx_input_free_input(void *data)
static void *gx_input_init(void) static void *gx_input_init(void)
{ {
settings_t *settings = config_get_ptr();
gx_input_t *gx = (gx_input_t*)calloc(1, sizeof(*gx)); gx_input_t *gx = (gx_input_t*)calloc(1, sizeof(*gx));
if (!gx) if (!gx)
return NULL; return NULL;
gx->joypad = input_joypad_init_driver(g_settings.input.joypad_driver); gx->joypad = input_joypad_init_driver(settings->input.joypad_driver);
return gx; return gx;
} }
@ -89,9 +90,10 @@ static void gx_input_poll(void *data)
static bool gx_input_key_pressed(void *data, int key) static bool gx_input_key_pressed(void *data, int key)
{ {
settings_t *settings = config_get_ptr();
gx_input_t *gx = (gx_input_t*)data; gx_input_t *gx = (gx_input_t*)data;
return (g_extern.lifecycle_state & (1ULL << key)) || return (g_extern.lifecycle_state & (1ULL << key)) ||
input_joypad_pressed(gx->joypad, 0, g_settings.input.binds[0], key); input_joypad_pressed(gx->joypad, 0, settings->input.binds[0], key);
} }
static uint64_t gx_input_get_capabilities(void *data) static uint64_t gx_input_get_capabilities(void *data)

View File

@ -60,7 +60,8 @@ static void *linuxraw_input_init(void)
{ {
struct sigaction sa; struct sigaction sa;
linuxraw_input_t *linuxraw = NULL; linuxraw_input_t *linuxraw = NULL;
driver_t *driver = driver_get_ptr(); driver_t *driver = driver_get_ptr();
settings_t *settings = config_get_ptr();
/* Only work on terminals. */ /* Only work on terminals. */
if (!isatty(0)) if (!isatty(0))
@ -116,7 +117,7 @@ static void *linuxraw_input_init(void)
atexit(linuxraw_resetKbmd); atexit(linuxraw_resetKbmd);
linuxraw->joypad = input_joypad_init_driver(g_settings.input.joypad_driver); linuxraw->joypad = input_joypad_init_driver(settings->input.joypad_driver);
input_keymaps_init_keyboard_lut(rarch_key_map_linux); input_keymaps_init_keyboard_lut(rarch_key_map_linux);
/* We need to disable use of stdin command interface if /* We need to disable use of stdin command interface if
@ -165,8 +166,10 @@ static int16_t linuxraw_analog_pressed(linuxraw_input_t *linuxraw,
static bool linuxraw_bind_button_pressed(void *data, int key) static bool linuxraw_bind_button_pressed(void *data, int key)
{ {
linuxraw_input_t *linuxraw = (linuxraw_input_t*)data; linuxraw_input_t *linuxraw = (linuxraw_input_t*)data;
return linuxraw_is_pressed(linuxraw, g_settings.input.binds[0], key) || settings_t *settings = config_get_ptr();
input_joypad_pressed(linuxraw->joypad, 0, g_settings.input.binds[0], key);
return linuxraw_is_pressed(linuxraw, settings->input.binds[0], key) ||
input_joypad_pressed(linuxraw->joypad, 0, settings->input.binds[0], key);
} }
static int16_t linuxraw_input_state(void *data, static int16_t linuxraw_input_state(void *data,

View File

@ -156,11 +156,12 @@ static void ps3_input_free_input(void *data)
static void* ps3_input_init(void) static void* ps3_input_init(void)
{ {
settings_t *settings = config_get_ptr();
ps3_input_t *ps3 = (ps3_input_t*)calloc(1, sizeof(*ps3)); ps3_input_t *ps3 = (ps3_input_t*)calloc(1, sizeof(*ps3));
if (!ps3) if (!ps3)
return NULL; return NULL;
ps3->joypad = input_joypad_init_driver(g_settings.input.joypad_driver); ps3->joypad = input_joypad_init_driver(settings->input.joypad_driver);
if (ps3->joypad) if (ps3->joypad)
ps3->joypad->init(); ps3->joypad->init();
@ -174,10 +175,12 @@ static void* ps3_input_init(void)
static bool ps3_input_key_pressed(void *data, int key) static bool ps3_input_key_pressed(void *data, int key)
{ {
ps3_input_t *ps3 = (ps3_input_t*)data; ps3_input_t *ps3 = (ps3_input_t*)data;
if (ps3) settings_t *settings = config_get_ptr();
return (g_extern.lifecycle_state & (1ULL << key)) ||
input_joypad_pressed(ps3->joypad, 0, g_settings.input.binds[0], key); if (!ps3)
return false; return false;
return (g_extern.lifecycle_state & (1ULL << key)) ||
input_joypad_pressed(ps3->joypad, 0, settings->input.binds[0], key);
} }
static uint64_t ps3_input_get_capabilities(void *data) static uint64_t ps3_input_get_capabilities(void *data)

View File

@ -82,20 +82,22 @@ static void psp_input_free_input(void *data)
static void* psp_input_initialize(void) static void* psp_input_initialize(void)
{ {
settings_t *settings = config_get_ptr();
psp_input_t *psp = (psp_input_t*)calloc(1, sizeof(*psp)); psp_input_t *psp = (psp_input_t*)calloc(1, sizeof(*psp));
if (!psp) if (!psp)
return NULL; return NULL;
psp->joypad = input_joypad_init_driver(g_settings.input.joypad_driver); psp->joypad = input_joypad_init_driver(settings->input.joypad_driver);
return psp; return psp;
} }
static bool psp_input_key_pressed(void *data, int key) static bool psp_input_key_pressed(void *data, int key)
{ {
settings_t *settings = config_get_ptr();
psp_input_t *psp = (psp_input_t*)data; psp_input_t *psp = (psp_input_t*)data;
return (g_extern.lifecycle_state & (1ULL << key)) || return (g_extern.lifecycle_state & (1ULL << key)) ||
input_joypad_pressed(psp->joypad, 0, g_settings.input.binds[0], key); input_joypad_pressed(psp->joypad, 0, settings->input.binds[0], key);
} }
static uint64_t psp_input_get_capabilities(void *data) static uint64_t psp_input_get_capabilities(void *data)

View File

@ -92,8 +92,9 @@ static void process_gamepad_event(void *data,
int i; int i;
screen_device_t device; screen_device_t device;
input_device_t* controller = NULL; input_device_t* controller = NULL;
settings_t *settings = config_get_ptr();
qnx_input_t *qnx = (qnx_input_t*)data; qnx_input_t *qnx = (qnx_input_t*)data;
(void)type; (void)type;
screen_get_event_property_pv(screen_event, screen_get_event_property_pv(screen_event,
@ -133,7 +134,7 @@ static void process_gamepad_event(void *data,
* TODO: Am I missing something? Is there a better way? */ * TODO: Am I missing something? Is there a better way? */
if((controller->port == 0) && if((controller->port == 0) &&
(controller->buttons & (controller->buttons &
g_settings.input.binds[0][RARCH_MENU_TOGGLE].joykey)) settings->input.binds[0][RARCH_MENU_TOGGLE].joykey))
g_extern.lifecycle_state ^= (1ULL << RARCH_MENU_TOGGLE); g_extern.lifecycle_state ^= (1ULL << RARCH_MENU_TOGGLE);
} }
@ -273,6 +274,7 @@ static void qnx_input_autodetect_gamepad(void *data,
{ {
char name_buf[256]; char name_buf[256];
qnx_input_t *qnx = (qnx_input_t*)data; qnx_input_t *qnx = (qnx_input_t*)data;
settings_t *settings = config_get_ptr();
if (!qnx) if (!qnx)
return; return;
@ -303,8 +305,8 @@ static void qnx_input_autodetect_gamepad(void *data,
if (name_buf[0] != '\0') if (name_buf[0] != '\0')
{ {
strlcpy(g_settings.input.device_names[port], strlcpy(settings->input.device_names[port],
name_buf, sizeof(g_settings.input.device_names[port])); name_buf, sizeof(settings->input.device_names[port]));
input_config_autoconfigure_joypad(port, name_buf, input_config_autoconfigure_joypad(port, name_buf,
controller->vid, controller->vid, controller->vid, controller->vid,
@ -322,6 +324,7 @@ static void process_keyboard_event(void *data,
input_device_t* controller = NULL; input_device_t* controller = NULL;
int i, b, sym, modifiers, flags, scan, cap; int i, b, sym, modifiers, flags, scan, cap;
qnx_input_t *qnx = (qnx_input_t*)data; qnx_input_t *qnx = (qnx_input_t*)data;
settings_t *settings = config_get_ptr();
(void)type; (void)type;
@ -375,7 +378,7 @@ static void process_keyboard_event(void *data,
for (b = 0; b < RARCH_FIRST_CUSTOM_BIND; ++b) for (b = 0; b < RARCH_FIRST_CUSTOM_BIND; ++b)
{ {
if ((unsigned int) if ((unsigned int)
g_settings.input.binds[controller->port][b].joykey settings->input.binds[controller->port][b].joykey
== (unsigned int)(sym & 0xFF)) == (unsigned int)(sym & 0xFF))
{ {
if (flags & KEY_DOWN) if (flags & KEY_DOWN)
@ -390,7 +393,7 @@ static void process_keyboard_event(void *data,
/* TODO: Am I missing something? Is there a better way? */ /* TODO: Am I missing something? Is there a better way? */
if((controller->port == 0) && ((unsigned int) if((controller->port == 0) && ((unsigned int)
g_settings.input.binds[0][RARCH_MENU_TOGGLE].joykey settings->input.binds[0][RARCH_MENU_TOGGLE].joykey
== (unsigned int)(sym&0xFF))) == (unsigned int)(sym&0xFF)))
{ {
if (flags & KEY_DOWN) if (flags & KEY_DOWN)
@ -638,6 +641,7 @@ static void handle_navigator_event(void *data, bps_event_t *event)
static void *qnx_input_init(void) static void *qnx_input_init(void)
{ {
int i; int i;
settings_t *settings = config_get_ptr();
qnx_input_t *qnx = (qnx_input_t*)calloc(1, sizeof(*qnx)); qnx_input_t *qnx = (qnx_input_t*)calloc(1, sizeof(*qnx));
if (!qnx) if (!qnx)
return NULL; return NULL;
@ -648,7 +652,7 @@ static void *qnx_input_init(void)
qnx->touch_map[i] = -1; qnx->touch_map[i] = -1;
} }
qnx->joypad = input_joypad_init_driver(g_settings.input.joypad_driver); qnx->joypad = input_joypad_init_driver(settings->input.joypad_driver);
for (i = 0; i < MAX_PADS; ++i) for (i = 0; i < MAX_PADS; ++i)
{ {
@ -770,12 +774,13 @@ static int16_t qnx_input_state(void *data,
unsigned port, unsigned device, unsigned idx, unsigned id) unsigned port, unsigned device, unsigned idx, unsigned id)
{ {
qnx_input_t *qnx = (qnx_input_t*)data; qnx_input_t *qnx = (qnx_input_t*)data;
settings_t *settings = config_get_ptr();
switch (device) switch (device)
{ {
case RETRO_DEVICE_JOYPAD: case RETRO_DEVICE_JOYPAD:
return input_joypad_pressed(qnx->joypad, port, return input_joypad_pressed(qnx->joypad, port,
(unsigned int)g_settings.input.binds[port], id); (unsigned int)settings->input.binds[port], id);
case RETRO_DEVICE_ANALOG: case RETRO_DEVICE_ANALOG:
return qnx_analog_input_state(qnx, port, idx, id); return qnx_analog_input_state(qnx, port, idx, id);
case RARCH_DEVICE_POINTER_SCREEN: case RARCH_DEVICE_POINTER_SCREEN:
@ -790,8 +795,10 @@ static int16_t qnx_input_state(void *data,
static bool qnx_input_key_pressed(void *data, int key) static bool qnx_input_key_pressed(void *data, int key)
{ {
qnx_input_t *qnx = (qnx_input_t*)data; qnx_input_t *qnx = (qnx_input_t*)data;
settings_t *settings = config_get_ptr();
return ((g_extern.lifecycle_state | driver.overlay_state.buttons ) & (1ULL << key) || return ((g_extern.lifecycle_state | driver.overlay_state.buttons ) & (1ULL << key) ||
input_joypad_pressed(qnx->joypad, 0, g_settings.input.binds[0], key)); input_joypad_pressed(qnx->joypad, 0, settings->input.binds[0], key));
} }
static void qnx_input_free_input(void *data) static void qnx_input_free_input(void *data)

View File

@ -79,7 +79,8 @@ static bool rwebinput_is_pressed(rwebinput_input_t *rwebinput, const struct retr
static bool rwebinput_bind_button_pressed(void *data, int key) static bool rwebinput_bind_button_pressed(void *data, int key)
{ {
rwebinput_input_t *rwebinput = (rwebinput_input_t*)data; rwebinput_input_t *rwebinput = (rwebinput_input_t*)data;
return rwebinput_is_pressed(rwebinput, g_settings.input.binds[0], key); settings_t *settings = config_get_ptr();
return rwebinput_is_pressed(rwebinput, settings->input.binds[0], key);
} }
static int16_t rwebinput_mouse_state(rwebinput_input_t *rwebinput, unsigned id) static int16_t rwebinput_mouse_state(rwebinput_input_t *rwebinput, unsigned id)

View File

@ -41,11 +41,12 @@ typedef struct sdl_input
static void *sdl_input_init(void) static void *sdl_input_init(void)
{ {
input_keymaps_init_keyboard_lut(rarch_key_map_sdl); input_keymaps_init_keyboard_lut(rarch_key_map_sdl);
settings_t *settings = config_get_ptr();
sdl_input_t *sdl = (sdl_input_t*)calloc(1, sizeof(*sdl)); sdl_input_t *sdl = (sdl_input_t*)calloc(1, sizeof(*sdl));
if (!sdl) if (!sdl)
return NULL; return NULL;
sdl->joypad = input_joypad_init_driver(g_settings.input.joypad_driver); sdl->joypad = input_joypad_init_driver(settings->input.joypad_driver);
RARCH_LOG("[SDL]: Input driver initialized.\n"); RARCH_LOG("[SDL]: Input driver initialized.\n");
return sdl; return sdl;
@ -101,7 +102,8 @@ static int16_t sdl_analog_pressed(sdl_input_t *sdl, const struct retro_keybind *
static bool sdl_bind_button_pressed(void *data, int key) static bool sdl_bind_button_pressed(void *data, int key)
{ {
const struct retro_keybind *binds = g_settings.input.binds[0]; settings_t *settings = config_get_ptr();
const struct retro_keybind *binds = settings->input.binds[0];
if (key >= 0 && key < RARCH_BIND_LIST_END) if (key >= 0 && key < RARCH_BIND_LIST_END)
return sdl_is_pressed((sdl_input_t*)data, 0, binds, key); return sdl_is_pressed((sdl_input_t*)data, 0, binds, key);
return false; return false;

View File

@ -557,8 +557,10 @@ static int16_t udev_input_state(void *data, const struct retro_keybind **binds,
static bool udev_input_bind_button_pressed(void *data, int key) static bool udev_input_bind_button_pressed(void *data, int key)
{ {
udev_input_t *udev = (udev_input_t*)data; udev_input_t *udev = (udev_input_t*)data;
return udev_input_is_pressed(udev, g_settings.input.binds[0], key) || settings_t *settings = config_get_ptr();
input_joypad_pressed(udev->joypad, 0, g_settings.input.binds[0], key);
return udev_input_is_pressed(udev, settings->input.binds[0], key) ||
input_joypad_pressed(udev->joypad, 0, settings->input.binds[0], key);
} }
static void udev_input_free(void *data) static void udev_input_free(void *data)
@ -705,6 +707,7 @@ static void disable_terminal_input(void)
static void *udev_input_init(void) static void *udev_input_init(void)
{ {
settings_t *settings = config_get_ptr();
udev_input_t *udev = (udev_input_t*)calloc(1, sizeof(*udev)); udev_input_t *udev = (udev_input_t*)calloc(1, sizeof(*udev));
if (!udev) if (!udev)
@ -743,9 +746,9 @@ static void *udev_input_init(void)
rule.rules = "evdev"; rule.rules = "evdev";
if (*g_settings.input.keyboard_layout) if (*settings->input.keyboard_layout)
{ {
list = string_split(g_settings.input.keyboard_layout, ":"); list = string_split(settings->input.keyboard_layout, ":");
if (list && list->size >= 2) if (list && list->size >= 2)
rule.variant = list->elems[1].data; rule.variant = list->elems[1].data;
if (list && list->size >= 1) if (list && list->size >= 1)
@ -814,7 +817,7 @@ static void *udev_input_init(void)
if (!udev->num_devices) if (!udev->num_devices)
RARCH_WARN("[udev]: Couldn't open any keyboard, mouse or touchpad. Are permissions set correctly for /dev/input/event*?\n"); RARCH_WARN("[udev]: Couldn't open any keyboard, mouse or touchpad. Are permissions set correctly for /dev/input/event*?\n");
udev->joypad = input_joypad_init_driver(g_settings.input.joypad_driver); udev->joypad = input_joypad_init_driver(settings->input.joypad_driver);
input_keymaps_init_keyboard_lut(rarch_key_map_linux); input_keymaps_init_keyboard_lut(rarch_key_map_linux);
disable_terminal_input(); disable_terminal_input();

View File

@ -47,7 +47,9 @@ typedef struct x11_input
static void *x_input_init(void) static void *x_input_init(void)
{ {
driver_t *driver = driver_get_ptr(); driver_t *driver = driver_get_ptr();
settings_t *settings = config_get_ptr();
if (driver->display_type != RARCH_DISPLAY_X11) if (driver->display_type != RARCH_DISPLAY_X11)
{ {
RARCH_ERR("Currently active window is not an X11 window. Cannot use this driver.\n"); RARCH_ERR("Currently active window is not an X11 window. Cannot use this driver.\n");
@ -62,7 +64,7 @@ static void *x_input_init(void)
x11->display = (Display*)driver->video_display; x11->display = (Display*)driver->video_display;
x11->win = (Window)driver->video_window; x11->win = (Window)driver->video_window;
x11->joypad = input_joypad_init_driver(g_settings.input.joypad_driver); x11->joypad = input_joypad_init_driver(settings->input.joypad_driver);
input_keymaps_init_keyboard_lut(rarch_key_map_x11); input_keymaps_init_keyboard_lut(rarch_key_map_x11);
return x11; return x11;
@ -116,10 +118,11 @@ static int16_t x_pressed_analog(x11_input_t *x11,
static bool x_bind_button_pressed(void *data, int key) static bool x_bind_button_pressed(void *data, int key)
{ {
x11_input_t *x11 = (x11_input_t*)data; x11_input_t *x11 = (x11_input_t*)data;
settings_t *settings = config_get_ptr();
if (!x11) if (!x11)
return false; return false;
return x_is_pressed(x11, g_settings.input.binds[0], key) || return x_is_pressed(x11, settings->input.binds[0], key) ||
input_joypad_pressed(x11->joypad, 0, g_settings.input.binds[0], key); input_joypad_pressed(x11->joypad, 0, settings->input.binds[0], key);
} }
static int16_t x_mouse_state(x11_input_t *x11, unsigned id) static int16_t x_mouse_state(x11_input_t *x11, unsigned id)

View File

@ -75,11 +75,12 @@ static void xdk_input_free_input(void *data)
static void *xdk_input_init(void) static void *xdk_input_init(void)
{ {
xdk_input_t *xdk = (xdk_input_t*)calloc(1, sizeof(*xdk)); settings_t *settings = config_get_ptr();
xdk_input_t *xdk = (xdk_input_t*)calloc(1, sizeof(*xdk));
if (!xdk) if (!xdk)
return NULL; return NULL;
xdk->joypad = input_joypad_init_driver(g_settings.input.joypad_driver); xdk->joypad = input_joypad_init_driver(settings->input.joypad_driver);
return xdk; return xdk;
} }
@ -87,8 +88,9 @@ static void *xdk_input_init(void)
static bool xdk_input_key_pressed(void *data, int key) static bool xdk_input_key_pressed(void *data, int key)
{ {
xdk_input_t *xdk = (xdk_input_t*)data; xdk_input_t *xdk = (xdk_input_t*)data;
settings_t *settings = config_get_ptr();
return (g_extern.lifecycle_state & (1ULL << key)) || return (g_extern.lifecycle_state & (1ULL << key)) ||
input_joypad_pressed(xdk->joypad, 0, g_settings.input.binds[0], key); input_joypad_pressed(xdk->joypad, 0, settings->input.binds[0], key);
} }
static uint64_t xdk_input_get_capabilities(void *data) static uint64_t xdk_input_get_capabilities(void *data)