Browse Source

lowl-hid: Save and use hid_enumerate results from library test

Luke Dashjr 12 years ago
parent
commit
a4f68ab19d
1 changed files with 9 additions and 2 deletions
  1. 9 2
      lowl-hid.c

+ 9 - 2
lowl-hid.c

@@ -50,6 +50,7 @@ int HID_API_EXPORT (*dlsym_hid_write)(hid_device *, const unsigned char *, size_
 } while(0)
 
 static bool hidapi_libusb;
+static struct hid_device_info *_probe_hid_enum;
 
 static
 bool hidapi_try_lib(const char * const dlname)
@@ -73,7 +74,7 @@ bool hidapi_try_lib(const char * const dlname)
 		applog(LOG_DEBUG, "%s: Loaded %s, but no devices enumerated; trying other libraries", __func__, dlname);
 		goto fail;
 	}
-	dlsym_hid_free_enumeration(hid_enum);
+	_probe_hid_enum = hid_enum;
 	
 	LOAD_SYM(hid_open_path);
 	LOAD_SYM(hid_close);
@@ -156,7 +157,13 @@ struct lowlevel_device_info *hid_devinfo_scan()
 	struct hid_device_info *hid_enum, *hid_item;
 	struct lowlevel_device_info *info, *devinfo_list = NULL;
 	
-	hid_enum = hid_enumerate(0, 0);
+	if (_probe_hid_enum)
+	{
+		hid_enum = _probe_hid_enum;
+		_probe_hid_enum = NULL;
+	}
+	else
+		hid_enum = hid_enumerate(0, 0);
 	if (!hid_enum)
 	{
 		applog(LOG_DEBUG, "%s: No HID devices found", __func__);