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