Zebediah Figura : wineusb.sys: Move the libusb_init() and libusb_exit() calls to the Unix library.

Alexandre Julliard julliard at winehq.org
Wed Jul 13 16:54:55 CDT 2022


Module: wine
Branch: master
Commit: 05fe2f3f82df8713a9fc69db17c6ec71dd663c98
URL:    https://gitlab.winehq.org/wine/wine/-/commit/05fe2f3f82df8713a9fc69db17c6ec71dd663c98

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Tue Jul  5 23:55:48 2022 -0500

wineusb.sys: Move the libusb_init() and libusb_exit() calls to the Unix library.

---

 dlls/wineusb.sys/unixlib.c | 9 +++++++++
 dlls/wineusb.sys/wineusb.c | 8 --------
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/dlls/wineusb.sys/unixlib.c b/dlls/wineusb.sys/unixlib.c
index 091d85d1ef1..cfced53d9bf 100644
--- a/dlls/wineusb.sys/unixlib.c
+++ b/dlls/wineusb.sys/unixlib.c
@@ -173,12 +173,19 @@ static NTSTATUS usb_main_loop(void *args)
 
     TRACE("Starting libusb event thread.\n");
 
+    if ((ret = libusb_init(NULL)))
+    {
+        ERR("Failed to initialize libusb: %s\n", libusb_strerror(ret));
+        return STATUS_UNSUCCESSFUL;
+    }
+
     if ((ret = libusb_hotplug_register_callback(NULL,
             LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED | LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT,
             LIBUSB_HOTPLUG_ENUMERATE, LIBUSB_HOTPLUG_MATCH_ANY, LIBUSB_HOTPLUG_MATCH_ANY,
             LIBUSB_HOTPLUG_MATCH_ANY, hotplug_cb, NULL, &hotplug_cb_handle)))
     {
         ERR("Failed to register callback: %s\n", libusb_strerror(ret));
+        libusb_exit(NULL);
         return STATUS_UNSUCCESSFUL;
     }
 
@@ -188,6 +195,8 @@ static NTSTATUS usb_main_loop(void *args)
             ERR("Error handling events: %s\n", libusb_strerror(ret));
     }
 
+    libusb_exit(NULL);
+
     queue_event(&shutdown_event);
 
     TRACE("Shutting down libusb event thread.\n");
diff --git a/dlls/wineusb.sys/wineusb.c b/dlls/wineusb.sys/wineusb.c
index 49033c76213..474ee6e96a6 100644
--- a/dlls/wineusb.sys/wineusb.c
+++ b/dlls/wineusb.sys/wineusb.c
@@ -731,14 +731,12 @@ static NTSTATUS WINAPI driver_add_device(DRIVER_OBJECT *driver, DEVICE_OBJECT *p
 
 static void WINAPI driver_unload(DRIVER_OBJECT *driver)
 {
-    libusb_exit(NULL);
 }
 
 NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, UNICODE_STRING *path)
 {
     NTSTATUS status;
     void *instance;
-    int err;
 
     TRACE("driver %p, path %s.\n", driver, debugstr_w(path->Buffer));
 
@@ -752,12 +750,6 @@ NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, UNICODE_STRING *path)
 
     driver_obj = driver;
 
-    if ((err = libusb_init(NULL)))
-    {
-        ERR("Failed to initialize libusb: %s\n", libusb_strerror(err));
-        return STATUS_UNSUCCESSFUL;
-    }
-
     driver->DriverExtension->AddDevice = driver_add_device;
     driver->DriverUnload = driver_unload;
     driver->MajorFunction[IRP_MJ_PNP] = driver_pnp;




More information about the wine-cvs mailing list