diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp index e7a2310fc6ed..99c0d4e3b7e1 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp @@ -97,16 +97,25 @@ CWII_IPC_HLE_Device_hid::CWII_IPC_HLE_Device_hid(u32 _DeviceID, const std::strin { deviceCommandAddress = 0; memset(hidDeviceAliases, 0, sizeof(hidDeviceAliases)); - libusb_init(NULL); - - usb_thread_running = true; - usb_thread = std::thread(checkUsbUpdates, this); + int ret = libusb_init(NULL); + if (ret) + { + ERROR_LOG(WII_IPC_HID, "libusb_init failed with error: %d", ret); + } + else + { + usb_thread_running = true; + usb_thread = std::thread(checkUsbUpdates, this); + } } CWII_IPC_HLE_Device_hid::~CWII_IPC_HLE_Device_hid() { - usb_thread_running = false; - usb_thread.join(); + if (usb_thread_running) + { + usb_thread_running = false; + usb_thread.join(); + } for ( std::map::const_iterator iter = open_devices.begin(); iter != open_devices.end(); ++iter ) {