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.
This commit is contained in:
Carlos Garnacho
2015-12-15 23:22:00 +01:00
parent b4aa498fe7
commit ee549c9ded

View File

@ -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)
{