From 64f7e7651f896b3ba6001486400d798af19a6f17 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sat, 17 Oct 2009 17:57:08 +0300 Subject: [PATCH] udev: handle "change" action properly, fix disc ejection/insertion --- modules/services_discovery/udev.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/modules/services_discovery/udev.c b/modules/services_discovery/udev.c index b443a83222..93e0857a93 100644 --- a/modules/services_discovery/udev.c +++ b/modules/services_discovery/udev.c @@ -172,15 +172,6 @@ static void RemoveDevice (services_discovery_t *sd, struct udev_device *dev) DestroyDevice (d); } -static void HandleDevice (services_discovery_t *sd, struct udev_device *dev, - bool add) -{ - if (!add) - RemoveDevice (sd, dev); - else - AddDevice (sd, dev); -} - static void *Run (void *); /** @@ -230,7 +221,7 @@ static int Open (vlc_object_t *obj, const struct subsys *subsys) { const char *path = udev_list_entry_get_name (deventry); struct udev_device *dev = udev_device_new_from_syspath (udev, path); - HandleDevice (sd, dev, true); + AddDevice (sd, dev); udev_device_unref (dev); } udev_enumerate_unref (devenum); @@ -293,13 +284,16 @@ static void *Run (void *data) if (dev == NULL) continue; - /* FIXME: handle change, offline, online */ const char *action = udev_device_get_action (dev); if (!strcmp (action, "add")) - HandleDevice (sd, dev, true); + AddDevice (sd, dev); else if (!strcmp (action, "remove")) - HandleDevice (sd, dev, false); - + RemoveDevice (sd, dev); + else if (!strcmp (action, "change")) + { + RemoveDevice (sd, dev); + AddDevice (sd, dev); + } udev_device_unref (dev); } return NULL; -- 2.39.2