| Index: third_party/libusb/composite-hid-close.patch
|
| diff --git a/third_party/libusb/composite-hid-close.patch b/third_party/libusb/composite-hid-close.patch
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d6749cf931ae3a984132fc3fd8fff356840242d1
|
| --- /dev/null
|
| +++ b/third_party/libusb/composite-hid-close.patch
|
| @@ -0,0 +1,32 @@
|
| +diff --git a/libusb/os/windows_usb.c b/libusb/os/windows_usb.c
|
| +index 9ae11b1..259897e 100644
|
| +--- a/libusb/os/windows_usb.c
|
| ++++ b/libusb/os/windows_usb.c
|
| +@@ -4236,6 +4236,7 @@ static void composite_close(int sub_api, struct libusb_device_handle *dev_handle
|
| + struct windows_device_priv *priv = _device_priv(dev_handle->dev);
|
| + uint8_t i;
|
| + bool available[SUB_API_MAX];
|
| ++ bool has_hid = false;
|
| +
|
| + for (i = 0; i<SUB_API_MAX; i++) {
|
| + available[i] = false;
|
| +@@ -4245,6 +4246,8 @@ static void composite_close(int sub_api, struct libusb_device_handle *dev_handle
|
| + if ( (priv->usb_interface[i].apib->id == USB_API_WINUSBX)
|
| + && (priv->usb_interface[i].sub_api != SUB_API_NOTSET) ) {
|
| + available[priv->usb_interface[i].sub_api] = true;
|
| ++ } else if (priv->usb_interface[i].apib->id == USB_API_HID) {
|
| ++ has_hid = true;
|
| + }
|
| + }
|
| +
|
| +@@ -4253,6 +4256,10 @@ static void composite_close(int sub_api, struct libusb_device_handle *dev_handle
|
| + usb_api_backend[USB_API_WINUSBX].close(i, dev_handle);
|
| + }
|
| + }
|
| ++
|
| ++ if (has_hid) {
|
| ++ usb_api_backend[USB_API_HID].close(sub_api, dev_handle);
|
| ++ }
|
| + }
|
| +
|
| + static int composite_claim_interface(int sub_api, struct libusb_device_handle *dev_handle, int iface)
|
|
|