gdk/x11: Properly unref removed device in XI2 device manager
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
This commit is contained in:
@@ -685,12 +685,13 @@ remove_device (GdkX11DeviceManagerXI2 *device_manager,
|
|||||||
if (device)
|
if (device)
|
||||||
{
|
{
|
||||||
detach_from_seat (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,
|
g_hash_table_remove (device_manager->id_table,
|
||||||
GINT_TO_POINTER (device_id));
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user