Diff between e89886ac6546f059955baf5d1b4f8fb25041c578 and bc06a970257730dcccc632839889efe087c30f47

Changed Files

File Additions Deletions Status
profiles/input/hog_device.c +8 -2 modified

Full Patch

diff --git a/profiles/input/hog_device.c b/profiles/input/hog_device.c
index 4f5e99b..e2a3488 100644
--- a/profiles/input/hog_device.c
+++ b/profiles/input/hog_device.c
@@ -852,8 +852,14 @@ static int hog_device_probe(struct btd_profile *p, struct btd_device *device,
 	return 0;
 }
 
-static void remove_device(gpointer hogdev, gpointer b)
+static void remove_device(gpointer a, gpointer b)
 {
+	struct hog_device *hogdev = a;
+	struct btd_device *device = b;
+
+	if (hogdev->device != device)
+		return;
+
 	devices = g_slist_remove(devices, hogdev);
 	hog_device_unregister(hogdev);
 }
@@ -864,7 +870,7 @@ static void hog_device_remove(struct btd_profile *p, struct btd_device *device)
 
 	DBG("path %s", path);
 
-	g_slist_foreach(devices, remove_device, NULL);
+	g_slist_foreach(devices, remove_device, device);
 }
 
 static struct btd_profile hog_profile = {