From 1a5e16ff997b340c2facd037f976f687142559cb Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 3 Jun 2015 18:55:04 +0200 Subject: [PATCH] Create input_config_autoconfigure_disconnect --- input/drivers_hid/iohidmanager_hid.c | 6 +----- input/drivers_hid/libusb_hid.c | 7 ++----- input/drivers_joypad/gx_joypad.c | 2 +- input/drivers_joypad/linuxraw_joypad.c | 8 +------- input/drivers_joypad/ps3_joypad.c | 8 +------- input/drivers_joypad/sdl_joypad.c | 4 ++-- input/drivers_joypad/udev_joypad.c | 5 +---- input/drivers_joypad/xdk_joypad.c | 5 +---- input/input_autodetect.c | 8 ++++++++ input/input_autodetect.h | 2 ++ tools/retroarch-joyconfig.c | 4 ++++ 11 files changed, 24 insertions(+), 35 deletions(-) diff --git a/input/drivers_hid/iohidmanager_hid.c b/input/drivers_hid/iohidmanager_hid.c index 54165564d2..6309ada8b1 100644 --- a/input/drivers_hid/iohidmanager_hid.c +++ b/input/drivers_hid/iohidmanager_hid.c @@ -217,11 +217,7 @@ static void iohidmanager_hid_device_remove(void *data, IOReturn result, void* se if (adapter && (adapter->slot < MAX_USERS)) { - char msg[PATH_MAX_LENGTH]; - - snprintf(msg, sizeof(msg), "Device #%u (%s) disconnected.", - adapter->slot, adapter->name); - rarch_main_msg_queue_push(msg, 0, 60, false); + input_config_autoconfigure_disconnect(adapter->slot, adapter->name); apple->buttons[adapter->slot] = 0; memset(apple->axes[adapter->slot], 0, sizeof(apple->axes)); diff --git a/input/drivers_hid/libusb_hid.c b/input/drivers_hid/libusb_hid.c index 94d1ed5c1c..4387df2bed 100644 --- a/input/drivers_hid/libusb_hid.c +++ b/input/drivers_hid/libusb_hid.c @@ -321,13 +321,10 @@ static int remove_adapter(void *data, struct libusb_device *dev) { if (adapter->next->device == dev) { - char msg[PATH_MAX_LENGTH]; struct libusb_adapter *new_next = NULL; + const char *name = (const char*)adapter->next->name; - fprintf(stderr, "Device 0x%p disconnected.\n", adapter->next->device); - snprintf(msg, sizeof(msg), "Device #%u (%s) disconnected.", - adapter->slot, adapter->next->name); - rarch_main_msg_queue_push(msg, 0, 60, false); + input_config_autoconfigure_disconnect(adapter->slot, name); adapter->next->quitting = true; sthread_join(adapter->next->thread); diff --git a/input/drivers_joypad/gx_joypad.c b/input/drivers_joypad/gx_joypad.c index 3041405192..ba62040171 100644 --- a/input/drivers_joypad/gx_joypad.c +++ b/input/drivers_joypad/gx_joypad.c @@ -138,7 +138,7 @@ int change_cb(int result, void *usrdata) void removal_cb(void *usrdata) { - RARCH_LOG("Device %d disconnected\n", (int)usrdata); + input_config_autoconfigure_disconnect((int)usrdata, gx_joypad.ident); } #endif diff --git a/input/drivers_joypad/linuxraw_joypad.c b/input/drivers_joypad/linuxraw_joypad.c index 0ae41b7bd0..b81f14643e 100644 --- a/input/drivers_joypad/linuxraw_joypad.c +++ b/input/drivers_joypad/linuxraw_joypad.c @@ -148,15 +148,9 @@ static void handle_plugged_pad(void) { if (linuxraw_pads[idx].fd >= 0) { - if (g_hotplug) - { - char msg[512]; - snprintf(msg, sizeof(msg), "Device #%u (%s) disconnected.", idx, linuxraw_pads[idx].ident); - rarch_main_msg_queue_push(msg, 0, 60, false); - } + input_config_autoconfigure_disconnect(idx, linuxraw_pads[idx].ident); - RARCH_LOG("[Device]: Device %s disconnected.\n", linuxraw_pads[idx].ident); close(linuxraw_pads[idx].fd); linuxraw_pads[idx].buttons = 0; memset(linuxraw_pads[idx].axes, 0, sizeof(linuxraw_pads[idx].axes)); diff --git a/input/drivers_joypad/ps3_joypad.c b/input/drivers_joypad/ps3_joypad.c index 509df63a8d..3b0e1c9a12 100644 --- a/input/drivers_joypad/ps3_joypad.c +++ b/input/drivers_joypad/ps3_joypad.c @@ -137,13 +137,7 @@ static void ps3_joypad_poll(void) { if ( (pad_info.port_status[port] & CELL_PAD_STATUS_CONNECTED) == 0 ) { - char msg[512]; - - snprintf(msg, sizeof(msg), - "Device #%u (%s) disconnected.", port, ps3_joypad.ident); - rarch_main_msg_queue_push(msg, 0, 60, false); - RARCH_LOG("%s\n", msg); - + input_config_autoconfigure_disconnect(port, ps3_joypad.ident); pads_connected[port] = 0; } else if ((pad_info.port_status[port] & CELL_PAD_STATUS_CONNECTED) > 0 ) diff --git a/input/drivers_joypad/sdl_joypad.c b/input/drivers_joypad/sdl_joypad.c index 5c6074f3cd..edbc44102e 100644 --- a/input/drivers_joypad/sdl_joypad.c +++ b/input/drivers_joypad/sdl_joypad.c @@ -202,14 +202,14 @@ static void sdl_pad_disconnect(unsigned id) if (sdl_pads[id].controller) { SDL_GameControllerClose(sdl_pads[id].controller); - RARCH_LOG("[SDL]: Device #%u disconnected.\n", id); + input_config_autoconfigure_disconnect(id, sdl_joypad.ident); } else #endif if (sdl_pads[id].joypad) { SDL_JoystickClose(sdl_pads[id].joypad); - RARCH_LOG("[SDL]: Device #%u disconnected.\n", id); + input_config_autoconfigure_disconnect(id, sdl_joypad.ident); } settings->input.device_names[id][0] = '\0'; diff --git a/input/drivers_joypad/udev_joypad.c b/input/drivers_joypad/udev_joypad.c index 80f0e296df..a325a2f799 100644 --- a/input/drivers_joypad/udev_joypad.c +++ b/input/drivers_joypad/udev_joypad.c @@ -368,10 +368,7 @@ static void udev_joypad_remove_device(const char *path) { if (udev_pads[i].path && !strcmp(udev_pads[i].path, path)) { - char msg[512]; - snprintf(msg, sizeof(msg), "Device #%u (%s) disconnected.", i, udev_pads[i].ident); - rarch_main_msg_queue_push(msg, 0, 60, false); - RARCH_LOG("[udev]: %s\n", msg); + input_config_autoconfigure_disconnect(i, udev_pads[i].ident); udev_free_pad(i, true); break; } diff --git a/input/drivers_joypad/xdk_joypad.c b/input/drivers_joypad/xdk_joypad.c index a0b55fd16e..ebd9fb2df9 100644 --- a/input/drivers_joypad/xdk_joypad.c +++ b/input/drivers_joypad/xdk_joypad.c @@ -165,10 +165,7 @@ static void xdk_joypad_poll(void) gamepads[port] = 0; pad_state[port] = 0; - char msg[512]; - snprintf(msg, sizeof(msg), "Device #%u (%s) disconnected.", port, xdk_joypad.ident); - rarch_main_msg_queue_push(msg, 0, 60, false); - RARCH_LOG("%s\n", msg); + input_config_autoconfigure_disconnect(port, xdk_joypad.ident); } /* handle inserted devices. */ diff --git a/input/input_autodetect.c b/input/input_autodetect.c index d19300b865..8aebdf08b8 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -258,3 +258,11 @@ const struct retro_keybind *input_get_auto_bind(unsigned port, unsigned id) return &settings->input.autoconf_binds[joy_idx][id]; return NULL; } + +void input_config_autoconfigure_disconnect(unsigned i, const char *ident) +{ + char msg[PATH_MAX_LENGTH]; + snprintf(msg, sizeof(msg), "Device #%u (%s) disconnected.", i, ident); + rarch_main_msg_queue_push(msg, 0, 60, false); + RARCH_LOG("%s\n", msg); +} diff --git a/input/input_autodetect.h b/input/input_autodetect.h index 2c918596c4..d96af1c516 100644 --- a/input/input_autodetect.h +++ b/input/input_autodetect.h @@ -34,6 +34,8 @@ const struct retro_keybind *input_get_auto_bind(unsigned port, void input_config_autoconfigure_joypad(autoconfig_params_t *params); +void input_config_autoconfigure_disconnect(unsigned i, const char *ident); + extern const char* const input_builtin_autoconfs[]; #endif diff --git a/tools/retroarch-joyconfig.c b/tools/retroarch-joyconfig.c index b009884a51..3702d5eb34 100644 --- a/tools/retroarch-joyconfig.c +++ b/tools/retroarch-joyconfig.c @@ -516,3 +516,7 @@ bool video_driver_read_viewport(uint8_t *buffer) { return false; } + +void input_config_autoconfigure_disconnect(unsigned id, const char *msg) +{ +}