Rémi Bernon : winebus.sys: Return an event from UDEV bus wait on device creation.

Alexandre Julliard julliard at winehq.org
Wed Sep 8 15:12:39 CDT 2021


Module: wine
Branch: master
Commit: f7be0f5edf51a54fd992c3144ea35a58fdd9750d
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=f7be0f5edf51a54fd992c3144ea35a58fdd9750d

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Mon Sep  6 09:17:32 2021 +0200

winebus.sys: Return an event from UDEV bus wait on device creation.

And queued events generated from initial device enumeration.

Instead of calling bus_create_hid_device.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/winebus.sys/bus_udev.c | 23 ++++++-----------------
 1 file changed, 6 insertions(+), 17 deletions(-)

diff --git a/dlls/winebus.sys/bus_udev.c b/dlls/winebus.sys/bus_udev.c
index cca1bf5e168..78e74de842a 100644
--- a/dlls/winebus.sys/bus_udev.c
+++ b/dlls/winebus.sys/bus_udev.c
@@ -1098,7 +1098,6 @@ static void udev_add_device(struct udev_device *dev)
         .input = -1,
     };
     struct platform_private *private;
-    DEVICE_OBJECT *device = NULL;
     const char *subsystem;
     const char *devnode;
     int fd;
@@ -1182,9 +1181,10 @@ static void udev_add_device(struct udev_device *dev)
         EnterCriticalSection(&udev_cs);
         list_add_tail(&device_list, &private->unix_device.entry);
         LeaveCriticalSection(&udev_cs);
+        private->udev_device = udev_device_ref(dev);
+        private->device_fd = fd;
 
-        device = bus_create_hid_device(&desc, &private->unix_device);
-        if (!device) HeapFree(GetProcessHeap(), 0, private);
+        bus_event_queue_device_created(&event_queue, &private->unix_device, &desc);
     }
 #ifdef HAS_PROPER_INPUT_HEADER
     else if (strcmp(subsystem, "input") == 0)
@@ -1195,23 +1195,12 @@ static void udev_add_device(struct udev_device *dev)
         EnterCriticalSection(&udev_cs);
         list_add_tail(&device_list, &private->unix_device.entry);
         LeaveCriticalSection(&udev_cs);
-
-        device = bus_create_hid_device(&desc, &private->unix_device);
-        if (!device) HeapFree(GetProcessHeap(), 0, private);
-    }
-#endif
-
-    if (device)
-    {
         private->udev_device = udev_device_ref(dev);
         private->device_fd = fd;
-        IoInvalidateDeviceRelations(bus_pdo, BusRelations);
-    }
-    else
-    {
-        WARN("Ignoring device %s with subsystem %s\n", debugstr_a(devnode), subsystem);
-        close(fd);
+
+        bus_event_queue_device_created(&event_queue, &private->unix_device, &desc);
     }
+#endif
 }
 
 static void try_remove_device(struct udev_device *dev)




More information about the wine-cvs mailing list