Refactor input_autoconfigure_connect - don't return

value - set input device name upon failure implicitly
This commit is contained in:
twinaphex 2019-07-16 15:28:22 +02:00
parent 67c70de8f3
commit 0257e01bee
25 changed files with 110 additions and 160 deletions

View File

@ -1244,16 +1244,13 @@ static void handle_hotplug(android_input_t *android,
if (*port < 0) if (*port < 0)
*port = android->pads_connected; *port = android->pads_connected;
if (!input_autoconfigure_connect( input_autoconfigure_connect(
name_buf, name_buf,
NULL, NULL,
android_joypad.ident, android_joypad.ident,
*port, *port,
vendorId, vendorId,
productId)) productId);
input_config_set_device_name(*port, name_buf);
input_config_set_device_name(*port, name_buf);
android->pad_states[android->pads_connected].id = id; android->pad_states[android->pads_connected].id = id;
android->pad_states[android->pads_connected].port = *port; android->pad_states[android->pads_connected].port = *port;

View File

@ -549,15 +549,14 @@ static void iohidmanager_hid_device_add_autodetect(unsigned idx,
const char *device_name, const char *driver_name, const char *device_name, const char *driver_name,
uint16_t dev_vid, uint16_t dev_pid) uint16_t dev_vid, uint16_t dev_pid)
{ {
if (!input_autoconfigure_connect( input_autoconfigure_connect(
device_name, device_name,
NULL, NULL,
driver_name, driver_name,
idx, idx,
dev_vid, dev_vid,
dev_pid dev_pid
)) );
input_config_set_device_name(idx, device_name);
RARCH_LOG("Port %d: %s.\n", idx, device_name); RARCH_LOG("Port %d: %s.\n", idx, device_name);
} }

View File

@ -148,15 +148,14 @@ static void libusb_hid_device_add_autodetect(unsigned idx,
const char *device_name, const char *driver_name, const char *device_name, const char *driver_name,
uint16_t dev_vid, uint16_t dev_pid) uint16_t dev_vid, uint16_t dev_pid)
{ {
if (!input_autoconfigure_connect( input_autoconfigure_connect(
device_name, device_name,
NULL, NULL,
driver_name, driver_name,
idx, idx,
dev_vid, dev_vid,
dev_pid dev_pid
)) );
input_config_set_device_name(idx, device_name);
} }
static void libusb_get_description(struct libusb_device *device, static void libusb_get_description(struct libusb_device *device,

View File

@ -143,14 +143,13 @@ static void wiiusb_hid_device_add_autodetect(unsigned idx,
const char *device_name, const char *driver_name, const char *device_name, const char *driver_name,
uint16_t dev_vid, uint16_t dev_pid) uint16_t dev_vid, uint16_t dev_pid)
{ {
if (!input_autoconfigure_connect( input_autoconfigure_connect(
device_name, device_name,
NULL, NULL,
driver_name, driver_name,
idx, idx,
dev_vid, dev_vid,
dev_pid)) dev_pid);
input_config_set_device_name(idx, device_name);
} }
static void wiiusb_get_description(usb_device_entry *device, static void wiiusb_get_description(usb_device_entry *device,

View File

@ -42,15 +42,14 @@ static const char *ctr_joypad_name(unsigned pad)
static void ctr_joypad_autodetect_add(unsigned autoconf_pad) static void ctr_joypad_autodetect_add(unsigned autoconf_pad)
{ {
if (!input_autoconfigure_connect( input_autoconfigure_connect(
ctr_joypad_name(autoconf_pad), ctr_joypad_name(autoconf_pad),
NULL, NULL,
ctr_joypad.ident, ctr_joypad.ident,
autoconf_pad, autoconf_pad,
0, 0,
0 0
)) );
input_config_set_device_name(autoconf_pad, ctr_joypad_name(autoconf_pad));
} }
static bool ctr_joypad_init(void *data) static bool ctr_joypad_init(void *data)

View File

@ -376,14 +376,13 @@ static BOOL CALLBACK enum_joypad_cb(const DIDEVICEINSTANCE *inst, void *p)
if (!is_xinput_pad) if (!is_xinput_pad)
#endif #endif
{ {
if (!input_autoconfigure_connect( input_autoconfigure_connect(
dinput_joypad_name(g_joypad_cnt), dinput_joypad_name(g_joypad_cnt),
dinput_joypad_friendly_name(g_joypad_cnt), dinput_joypad_friendly_name(g_joypad_cnt),
dinput_joypad.ident, dinput_joypad.ident,
g_joypad_cnt, g_joypad_cnt,
dinput_joypad_vid(g_joypad_cnt), dinput_joypad_vid(g_joypad_cnt),
dinput_joypad_pid(g_joypad_cnt))) dinput_joypad_pid(g_joypad_cnt));
input_config_set_device_name(g_joypad_cnt, dinput_joypad_name(g_joypad_cnt));
} }
#ifdef HAVE_XINPUT #ifdef HAVE_XINPUT

View File

@ -151,15 +151,14 @@ static const char *dos_joypad_name(unsigned pad)
static void dos_joypad_autodetect_add(unsigned autoconf_pad) static void dos_joypad_autodetect_add(unsigned autoconf_pad)
{ {
if (!input_autoconfigure_connect( input_autoconfigure_connect(
dos_joypad_name(autoconf_pad), dos_joypad_name(autoconf_pad),
NULL, NULL,
dos_joypad.ident, dos_joypad.ident,
autoconf_pad, autoconf_pad,
0, 0,
0 0
)) );
input_config_set_device_name(autoconf_pad, dos_joypad_name(autoconf_pad));
} }
static bool dos_joypad_init(void *data) static bool dos_joypad_init(void *data)

View File

@ -142,17 +142,14 @@ static void handle_hotplug(unsigned port, uint32_t ptype)
pad_type[port] = ptype; pad_type[port] = ptype;
if (ptype != WPAD_EXP_NOCONTROLLER) if (ptype != WPAD_EXP_NOCONTROLLER)
{ input_autoconfigure_connect(
if (!input_autoconfigure_connect(
gx_joypad_name(port), gx_joypad_name(port),
NULL, NULL,
gx_joypad.ident, gx_joypad.ident,
port, port,
0, 0,
0 0
)) );
input_config_set_device_name(port, gx_joypad_name(port));
}
} }
static bool gx_joypad_button(unsigned port, uint16_t key) static bool gx_joypad_button(unsigned port, uint16_t key)

View File

@ -191,14 +191,13 @@ retry:
linuxraw_pads[idx].fd = -1; linuxraw_pads[idx].fd = -1;
*linuxraw_pads[idx].ident = '\0'; *linuxraw_pads[idx].ident = '\0';
if (!input_autoconfigure_connect( input_autoconfigure_connect(
NULL, NULL,
NULL, NULL,
linuxraw_joypad_name(idx), linuxraw_joypad_name(idx),
idx, idx,
0, 0,
0)) 0);
input_config_set_device_name(idx, NULL);
} }
} }
/* Sometimes, device will be created before /* Sometimes, device will be created before
@ -213,17 +212,13 @@ retry:
if ( !string_is_empty(linuxraw_pads[idx].ident) if ( !string_is_empty(linuxraw_pads[idx].ident)
&& linuxraw_joypad_init_pad(path, &linuxraw_pads[idx])) && linuxraw_joypad_init_pad(path, &linuxraw_pads[idx]))
{ input_autoconfigure_connect(
if (!input_autoconfigure_connect( linuxraw_pads[idx].ident,
linuxraw_pads[idx].ident, NULL,
NULL, linuxraw_joypad.ident,
linuxraw_joypad.ident, idx,
idx, 0,
0, 0);
0))
input_config_set_device_name(idx,
linuxraw_joypad_name(idx));
}
} }
} }
} }
@ -255,14 +250,13 @@ static bool linuxraw_joypad_init(void *data)
snprintf(path, sizeof(path), "/dev/input/js%u", i); snprintf(path, sizeof(path), "/dev/input/js%u", i);
if (!input_autoconfigure_connect( input_autoconfigure_connect(
pad->ident, pad->ident,
NULL, NULL,
"linuxraw", "linuxraw",
i, i,
0, 0,
0)) 0);
input_config_set_device_name(i, pad->ident);
if (linuxraw_joypad_init_pad(path, pad)) if (linuxraw_joypad_init_pad(path, pad))
linuxraw_poll_pad(pad); linuxraw_poll_pad(pad);

View File

@ -295,9 +295,7 @@ static void apple_gamecontroller_joypad_disconnect(GCController* controller)
static void mfi_joypad_autodetect_add(unsigned autoconf_pad) static void mfi_joypad_autodetect_add(unsigned autoconf_pad)
{ {
if ( !input_autoconfigure_connect("mFi Controller", NULL, mfi_joypad.ident, autoconf_pad, 0, 0) ) { input_autoconfigure_connect("mFi Controller", NULL, mfi_joypad.ident, autoconf_pad, 0, 0);
input_config_set_device(autoconf_pad, "mFi Controller");
}
} }
bool apple_gamecontroller_joypad_init(void *data) bool apple_gamecontroller_joypad_init(void *data)

View File

@ -305,15 +305,14 @@ static bool parport_joypad_init(void *data)
} }
} }
if (!input_autoconfigure_connect( input_autoconfigure_connect(
"Generic Parallel Port device", "Generic Parallel Port device",
NULL, NULL,
"parport", "parport",
i, i,
0, 0,
0 0
)) );
input_config_set_device_name(i, "Generic Parallel Port device");
} }
return true; return true;

View File

@ -66,14 +66,12 @@ static bool ps2_joypad_init(void *data)
for (port = 0; port < PS2_MAX_PADS; port++) for (port = 0; port < PS2_MAX_PADS; port++)
{ {
bool auto_configure = input_autoconfigure_connect( ps2_joypad_name(port), input_autoconfigure_connect( ps2_joypad_name(port),
NULL, NULL,
ps2_joypad.ident, ps2_joypad.ident,
port, port,
0, 0,
0); 0);
if (!auto_configure)
input_config_set_device_name(port, ps2_joypad_name(port));
/* Port 0 -> Connector 1, Port 1 -> Connector 2 */ /* Port 0 -> Connector 1, Port 1 -> Connector 2 */
if((ret = padPortOpen(port, PS2_PAD_SLOT, padBuf[port])) == 0) if((ret = padPortOpen(port, PS2_PAD_SLOT, padBuf[port])) == 0)

View File

@ -40,15 +40,14 @@ static const char *ps3_joypad_name(unsigned pad)
static void ps3_joypad_autodetect_add(unsigned autoconf_pad) static void ps3_joypad_autodetect_add(unsigned autoconf_pad)
{ {
if (!input_autoconfigure_connect( input_autoconfigure_connect(
ps3_joypad_name(autoconf_pad), ps3_joypad_name(autoconf_pad),
NULL, NULL,
ps3_joypad.ident, ps3_joypad.ident,
autoconf_pad, autoconf_pad,
0, 0,
0 0
)) );
input_config_set_device_name(autoconf_pad, ps3_joypad_name(autoconf_pad));
} }
static bool ps3_joypad_init(void *data) static bool ps3_joypad_init(void *data)

View File

@ -112,15 +112,13 @@ static bool ps4_joypad_init(void *data)
ds_joypad_states[num_players].userId = userId; ds_joypad_states[num_players].userId = userId;
RARCH_LOG("NEW PAD: num_players %x \n", num_players); RARCH_LOG("NEW PAD: num_players %x \n", num_players);
bool auto_configure = input_autoconfigure_connect( input_autoconfigure_connect(
ps4_joypad_name(num_players), ps4_joypad_name(num_players),
NULL, NULL,
ps4_joypad.ident, ps4_joypad.ident,
num_players, num_players,
0, 0,
0); 0);
if (!auto_configure)
input_config_set_device_name(num_players, ps4_joypad_name(num_players));
num_players++; num_players++;
} }
} }

View File

@ -101,17 +101,14 @@ static bool psp_joypad_init(void *data)
#endif #endif
for (i = 0; i < players_count; i++) for (i = 0; i < players_count; i++)
{ input_autoconfigure_connect(
if (!input_autoconfigure_connect( psp_joypad_name(i),
psp_joypad_name(i), NULL,
NULL, psp_joypad.ident,
psp_joypad.ident, i,
i, 0,
0, 0
0 );
))
input_config_set_device_name(i, psp_joypad_name(i));
}
return true; return true;
} }
@ -211,17 +208,14 @@ static void psp_joypad_poll(void)
if (old_ctrl_info.port[player + 1] == SCE_CTRL_TYPE_UNPAIRED && if (old_ctrl_info.port[player + 1] == SCE_CTRL_TYPE_UNPAIRED &&
curr_ctrl_info.port[player + 1] != SCE_CTRL_TYPE_UNPAIRED) curr_ctrl_info.port[player + 1] != SCE_CTRL_TYPE_UNPAIRED)
{ input_autoconfigure_connect(
if (!input_autoconfigure_connect( psp_joypad_name(player),
psp_joypad_name(player), NULL,
NULL, psp_joypad.ident,
psp_joypad.ident, player,
player, 0,
0, 0
0 );
))
input_config_set_device_name(player, psp_joypad_name(player));
}
} }
memcpy(&old_ctrl_info, &curr_ctrl_info, sizeof(SceCtrlPortInfo)); memcpy(&old_ctrl_info, &curr_ctrl_info, sizeof(SceCtrlPortInfo));
} }

View File

@ -30,17 +30,14 @@ static bool qnx_joypad_init(void *data)
(void)data; (void)data;
for (autoconf_pad = 0; autoconf_pad < MAX_USERS; autoconf_pad++) for (autoconf_pad = 0; autoconf_pad < MAX_USERS; autoconf_pad++)
{ input_autoconfigure_connect(
if (!input_autoconfigure_connect(
qnx_joypad_name(autoconf_pad), qnx_joypad_name(autoconf_pad),
NULL, NULL,
qnx_joypad.ident, qnx_joypad.ident,
autoconf_pad, autoconf_pad,
0, 0,
0 0
)) );
input_config_set_device_name(autoconf_pad, qnx_joypad_name(autoconf_pad));
}
return true; return true;
} }

View File

@ -48,22 +48,16 @@ static EM_BOOL rwebpad_gamepad_cb(int event_type,
} }
if (event_type == EMSCRIPTEN_EVENT_GAMEPADCONNECTED) if (event_type == EMSCRIPTEN_EVENT_GAMEPADCONNECTED)
{ input_autoconfigure_connect(
if (!input_autoconfigure_connect(
gamepad_event->id, /* name */ gamepad_event->id, /* name */
NULL, /* display name */ NULL, /* display name */
rwebpad_joypad.ident, /* driver */ rwebpad_joypad.ident, /* driver */
gamepad_event->index, /* idx */ gamepad_event->index, /* idx */
vid, /* vid */ vid, /* vid */
pid)) /* pid */ pid); /* pid */
input_config_set_device_name(gamepad_event->index,
gamepad_event->id);
}
else if (event_type == EMSCRIPTEN_EVENT_GAMEPADDISCONNECTED) else if (event_type == EMSCRIPTEN_EVENT_GAMEPADDISCONNECTED)
{
input_autoconfigure_disconnect(gamepad_event->index, input_autoconfigure_disconnect(gamepad_event->index,
rwebpad_joypad.ident); rwebpad_joypad.ident);
}
return EM_TRUE; return EM_TRUE;
} }

View File

@ -145,14 +145,13 @@ static void sdl_pad_connect(unsigned id)
#endif #endif
#endif #endif
if (!input_autoconfigure_connect( input_autoconfigure_connect(
sdl_joypad_name(id), sdl_joypad_name(id),
NULL, NULL,
sdl_joypad.ident, sdl_joypad.ident,
id, id,
vendor, vendor,
product)) product);
input_config_set_device_name(id, sdl_joypad_name(id));
RARCH_LOG("[SDL]: Device #%u (%04x:%04x) connected: %s.\n", id, vendor, RARCH_LOG("[SDL]: Device #%u (%04x:%04x) connected: %s.\n", id, vendor,
product, sdl_joypad_name(id)); product, sdl_joypad_name(id));

View File

@ -49,15 +49,13 @@ static const char *switch_joypad_name(unsigned pad)
static void switch_joypad_autodetect_add(unsigned autoconf_pad) static void switch_joypad_autodetect_add(unsigned autoconf_pad)
{ {
if (!input_autoconfigure_connect( input_autoconfigure_connect(
switch_joypad_name(autoconf_pad), /* name */ switch_joypad_name(autoconf_pad), /* name */
NULL, /* display name */ NULL, /* display name */
switch_joypad.ident, /* driver */ switch_joypad.ident, /* driver */
autoconf_pad, /* idx */ autoconf_pad, /* idx */
0, /* vid */ 0, /* vid */
0)) /* pid */ 0); /* pid */
input_config_set_device_name(autoconf_pad,
switch_joypad_name(autoconf_pad));
} }
static bool switch_joypad_init(void *data) static bool switch_joypad_init(void *data)

View File

@ -239,14 +239,13 @@ static int udev_add_pad(struct udev_device *dev, unsigned p, int fd, const char
if (!string_is_empty(pad->ident)) if (!string_is_empty(pad->ident))
{ {
if (!input_autoconfigure_connect( input_autoconfigure_connect(
pad->ident, pad->ident,
NULL, NULL,
udev_joypad.ident, udev_joypad.ident,
p, p,
pad->vid, pad->vid,
pad->pid)) pad->pid);
input_config_set_device_name(p, pad->ident);
ret = 1; ret = 1;
} }

View File

@ -46,14 +46,13 @@ static const char *xdk_joypad_name(unsigned pad)
static void xdk_joypad_autodetect_add(unsigned autoconf_pad) static void xdk_joypad_autodetect_add(unsigned autoconf_pad)
{ {
if (!input_autoconfigure_connect( input_autoconfigure_connect(
xdk_joypad_name(autoconf_pad), xdk_joypad_name(autoconf_pad),
NULL, NULL,
xdk_joypad.ident, xdk_joypad.ident,
autoconf_pad, autoconf_pad,
0, 0,
0)) 0);
input_config_set_device_name(autoconf_pad, xdk_joypad_name(autoconf_pad));
} }
static bool xdk_joypad_init(void *data) static bool xdk_joypad_init(void *data)

View File

@ -342,14 +342,13 @@ static bool xinput_joypad_init(void *data)
vid, pid, dinput_index, xinput_joypad_name(j), j); vid, pid, dinput_index, xinput_joypad_name(j), j);
#endif #endif
if (!input_autoconfigure_connect( input_autoconfigure_connect(
xinput_joypad_name(j), xinput_joypad_name(j),
NULL, NULL,
xinput_joypad.ident, xinput_joypad.ident,
j, j,
vid, vid,
pid)) pid);
input_config_set_device_name(j, xinput_joypad_name(j));
} }
} }

View File

@ -9544,9 +9544,8 @@ void input_pad_connect(unsigned port, input_device_driver_t *driver)
fire_connection_listener(port, driver); fire_connection_listener(port, driver);
if (!input_autoconfigure_connect(driver->name(port), NULL, driver->ident, input_autoconfigure_connect(driver->name(port), NULL, driver->ident,
port, 0, 0)) port, 0, 0);
input_config_set_device_name(port, driver->name(port));
} }
#ifdef HAVE_HID #ifdef HAVE_HID

View File

@ -971,7 +971,7 @@ unsigned input_autoconfigure_get_device_name_index(unsigned i)
return input_device_name_index[i]; return input_device_name_index[i];
} }
bool input_autoconfigure_connect( void input_autoconfigure_connect(
const char *name, const char *name,
const char *display_name, const char *display_name,
const char *driver, const char *driver,
@ -987,7 +987,18 @@ bool input_autoconfigure_connect(
bool autodetect_enable = settings ? settings->bools.input_autodetect_enable : false; bool autodetect_enable = settings ? settings->bools.input_autodetect_enable : false;
if (!task || !state || !autodetect_enable) if (!task || !state || !autodetect_enable)
goto error; {
if (state)
{
input_autoconfigure_params_free(state);
free(state);
}
if (task)
free(task);
input_config_set_device_name(idx, name);
return;
}
if (!string_is_empty(name)) if (!string_is_empty(name))
state->name = strdup(name); state->name = strdup(name);
@ -1004,7 +1015,7 @@ bool input_autoconfigure_connect(
input_autoconfigure_override_handler(state); input_autoconfigure_override_handler(state);
if (!string_is_empty(state->name)) if (!string_is_empty(state->name))
input_config_set_device_name(state->idx, state->name); input_config_set_device_name(state->idx, state->name);
input_config_set_pid(state->idx, state->pid); input_config_set_pid(state->idx, state->pid);
input_config_set_vid(state->idx, state->vid); input_config_set_vid(state->idx, state->vid);
@ -1013,10 +1024,10 @@ bool input_autoconfigure_connect(
input_autoconf_binds[state->idx][i].joykey = NO_BTN; input_autoconf_binds[state->idx][i].joykey = NO_BTN;
input_autoconf_binds[state->idx][i].joyaxis = AXIS_NONE; input_autoconf_binds[state->idx][i].joyaxis = AXIS_NONE;
if ( if (
!string_is_empty(input_autoconf_binds[state->idx][i].joykey_label)) !string_is_empty(input_autoconf_binds[state->idx][i].joykey_label))
free(input_autoconf_binds[state->idx][i].joykey_label); free(input_autoconf_binds[state->idx][i].joykey_label);
if ( if (
!string_is_empty(input_autoconf_binds[state->idx][i].joyaxis_label)) !string_is_empty(input_autoconf_binds[state->idx][i].joyaxis_label))
free(input_autoconf_binds[state->idx][i].joyaxis_label); free(input_autoconf_binds[state->idx][i].joyaxis_label);
input_autoconf_binds[state->idx][i].joykey_label = NULL; input_autoconf_binds[state->idx][i].joykey_label = NULL;
input_autoconf_binds[state->idx][i].joyaxis_label = NULL; input_autoconf_binds[state->idx][i].joyaxis_label = NULL;
@ -1028,17 +1039,4 @@ bool input_autoconfigure_connect(
task->handler = input_autoconfigure_connect_handler; task->handler = input_autoconfigure_connect_handler;
task_queue_push(task); task_queue_push(task);
return true;
error:
if (state)
{
input_autoconfigure_params_free(state);
free(state);
}
if (task)
free(task);
return false;
} }

View File

@ -134,7 +134,7 @@ unsigned input_autoconfigure_get_device_name_index(unsigned i);
void input_autoconfigure_reset(void); void input_autoconfigure_reset(void);
bool input_autoconfigure_connect( void input_autoconfigure_connect(
const char *name, const char *name,
const char *display_name, const char *display_name,
const char *driver, const char *driver,