[gtk: 2/3] gdk/x11: Properly unref removed device in XI2 device manager



commit 9c6669be487c29335d25d11f2f50f5f32c203e3b
Author: Sebastian Keller <skeller gnome org>
Date:   Mon Jan 27 01:02:29 2020 +0100

    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

 gdk/x11/gdkdevicemanager-xi2.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
---
diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c
index 645e992c38..86bf669c8a 100644
--- a/gdk/x11/gdkdevicemanager-xi2.c
+++ b/gdk/x11/gdkdevicemanager-xi2.c
@@ -685,12 +685,13 @@ remove_device (GdkX11DeviceManagerXI2 *device_manager,
   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);
     }
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]