Forráskód Böngészése

Address comments for better clarity/signed dev count

Ameer 6 éve
szülő
commit
3c7a115afe
1 módosított fájl, 15 hozzáadás és 11 törlés
  1. 15 11
      src/input_common/gcadapter/gc_adapter.cpp

+ 15 - 11
src/input_common/gcadapter/gc_adapter.cpp

@@ -215,23 +215,27 @@ void Adapter::Setup() {
     adapter_controllers_status.fill(ControllerTypes::None);
     adapter_controllers_status.fill(ControllerTypes::None);
 
 
     // pointer to list of connected usb devices
     // pointer to list of connected usb devices
-    libusb_device** devices;
+    libusb_device** devices{};
 
 
     // populate the list of devices, get the count
     // populate the list of devices, get the count
-    const std::size_t device_count = libusb_get_device_list(libusb_ctx, &devices);
+    const ssize_t device_count = libusb_get_device_list(libusb_ctx, &devices);
     if (device_count < 0) {
     if (device_count < 0) {
         LOG_ERROR(Input, "libusb_get_device_list failed with error: {}", device_count);
         LOG_ERROR(Input, "libusb_get_device_list failed with error: {}", device_count);
+        detect_thread_running = false; // Stop the loop constantly checking for gc adapter
+        // TODO: For hotplug+gc adapter checkbox implementation, revert this.
         return;
         return;
     }
     }
 
 
-    for (std::size_t index = 0; index < device_count; ++index) {
-        if (CheckDeviceAccess(devices[index])) {
-            // GC Adapter found and accessible, registering it
-            GetGCEndpoint(devices[index]);
-            break;
+    if (devices != nullptr) {
+        for (std::size_t index = 0; index < device_count; ++index) {
+            if (CheckDeviceAccess(devices[index])) {
+                // GC Adapter found and accessible, registering it
+                GetGCEndpoint(devices[index]);
+                break;
+            }
         }
         }
+        libusb_free_device_list(devices, 1);
     }
     }
-    libusb_free_device_list(devices, 1);
 }
 }
 
 
 bool Adapter::CheckDeviceAccess(libusb_device* device) {
 bool Adapter::CheckDeviceAccess(libusb_device* device) {
@@ -288,10 +292,10 @@ bool Adapter::CheckDeviceAccess(libusb_device* device) {
 
 
 void Adapter::GetGCEndpoint(libusb_device* device) {
 void Adapter::GetGCEndpoint(libusb_device* device) {
     libusb_config_descriptor* config = nullptr;
     libusb_config_descriptor* config = nullptr;
-    const int config_descriptor_error = libusb_get_config_descriptor(device, 0, &config);
-    if (config_descriptor_error) {
+    const int config_descriptor_return = libusb_get_config_descriptor(device, 0, &config);
+    if (config_descriptor_return != LIBUSB_SUCCESS) {
         LOG_ERROR(Input, "libusb_get_config_descriptor failed with error = {}",
         LOG_ERROR(Input, "libusb_get_config_descriptor failed with error = {}",
-                  config_descriptor_error);
+                  config_descriptor_return);
         return;
         return;
     }
     }