[gtk+] GdkWindow: Listen to ::seat-removed in order to remove pointer info



commit ee549c9ded901283e8d7d13e1634b5e9f7780c52
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue Dec 15 23:22:00 2015 +0100

    GdkWindow: Listen to ::seat-removed in order to remove pointer info
    
    Our actions on ::device-removed only actually applied to master
    pointers, so listening to GdkDisplay::seat-removed and operating
    on the seat pointer is equivalent.

 gdk/gdkwindow.c |   20 +++++++++-----------
 1 files changed, 9 insertions(+), 11 deletions(-)
---
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 961c787..a1dadc3 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -478,10 +478,12 @@ gdk_window_class_init (GdkWindowClass *klass)
 }
 
 static void
-device_removed_cb (GdkDeviceManager *device_manager,
-                   GdkDevice        *device,
-                   GdkWindow        *window)
+seat_removed_cb (GdkDisplay *display,
+                 GdkSeat    *seat,
+                 GdkWindow  *window)
 {
+  GdkDevice *device = gdk_seat_get_pointer (seat);
+
   window->devices_inside = g_list_remove (window->devices_inside, device);
   g_hash_table_remove (window->device_cursor, device);
 
@@ -493,10 +495,9 @@ static void
 gdk_window_finalize (GObject *object)
 {
   GdkWindow *window = GDK_WINDOW (object);
-  GdkDeviceManager *device_manager;
 
-  device_manager = gdk_display_get_device_manager (gdk_window_get_display (window));
-  g_signal_handlers_disconnect_by_func (device_manager, device_removed_cb, window);
+  g_signal_handlers_disconnect_by_func (gdk_window_get_display (window),
+                                        seat_removed_cb, window);
 
   if (!GDK_WINDOW_DESTROYED (window))
     {
@@ -1287,7 +1288,6 @@ gdk_window_new (GdkWindow     *parent,
   gboolean native;
   GdkEventMask event_mask;
   GdkWindow *real_parent;
-  GdkDeviceManager *device_manager;
 
   g_return_val_if_fail (attributes != NULL, NULL);
 
@@ -1451,10 +1451,8 @@ gdk_window_new (GdkWindow     *parent,
                                  (attributes->cursor) :
                                  NULL));
 
-  device_manager = gdk_display_get_device_manager (gdk_window_get_display (parent));
-  g_signal_connect (device_manager, "device-removed",
-                    G_CALLBACK (device_removed_cb), window);
-
+  g_signal_connect (gdk_window_get_display (parent), "seat-removed",
+                    G_CALLBACK (seat_removed_cb), window);
 
   if ((_gdk_gl_flags & (GDK_GL_ALWAYS | GDK_GL_DISABLE)) == GDK_GL_ALWAYS)
     {


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