From 215772237b669551490f5a65343cce7d8b0dda1b Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Sat, 12 Jan 2008 16:13:01 +0000 Subject: [PATCH] * Fixed removing from device list with only one device info present * Removed now unnecessary devfs calls again * Add an explanation in device_removed() git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23442 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/drivers/input/usb_hid/devlist.c | 6 ++++-- src/add-ons/kernel/drivers/input/usb_hid/hid.c | 10 +++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/add-ons/kernel/drivers/input/usb_hid/devlist.c b/src/add-ons/kernel/drivers/input/usb_hid/devlist.c index 539d2ff247..86edbcc7e9 100644 --- a/src/add-ons/kernel/drivers/input/usb_hid/devlist.c +++ b/src/add-ons/kernel/drivers/input/usb_hid/devlist.c @@ -48,9 +48,11 @@ remove_device_info(hid_device_info *device) acquire_sem(gDeviceListLock); - if (sDeviceList == device) + if (sDeviceList == device) { sDeviceList = device->next; - else { + --sDeviceCount; + gDeviceListChanged = true; + } else { hid_device_info *previous; for (previous = sDeviceList; previous != NULL; previous = previous->next) { if (previous->next == device) { diff --git a/src/add-ons/kernel/drivers/input/usb_hid/hid.c b/src/add-ons/kernel/drivers/input/usb_hid/hid.c index 21c047b676..1b4f5c8b75 100644 --- a/src/add-ons/kernel/drivers/input/usb_hid/hid.c +++ b/src/add-ons/kernel/drivers/input/usb_hid/hid.c @@ -21,10 +21,6 @@ #include #include -#ifdef HAIKU_TARGET_PLATFORM_HAIKU -#include -#endif - #define MAX_BUTTONS 16 static status_t hid_device_added(const usb_device *dev, void **cookie); @@ -876,13 +872,13 @@ hid_device_removed(void *cookie) free(device->insns); delete_device(device); } else { + // If the input_server has opened us this will always be the case. + // We unpublish our node in the devfs which will notify the mouse + // add-on to unregister and release us. DPRINTF_INFO((MY_ID "%s still open\n", device->name)); device->active = false; } -#ifdef HAIKU_TARGET_PLATFORM_HAIKU - devfs_unpublish_device(device->name, true); -#endif return B_OK; }