When a device is added, there are two references to it by the device
manager, the initial one and the one used for the id_table. Removing a
device only removed the reference added by the id_table resulting in the
GdkDevice being leaked.
https://gitlab.gnome.org/GNOME/gtk/merge_requests/1358
if (device)
{
detach_from_seat (device);
- device_manager->devices = g_list_remove (device_manager->devices, device);
-
- g_object_run_dispose (G_OBJECT (device));
g_hash_table_remove (device_manager->id_table,
GINT_TO_POINTER (device_id));
+
+ device_manager->devices = g_list_remove (device_manager->devices, device);
+ g_object_run_dispose (G_OBJECT (device));
+ g_object_unref (device);
}
}