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:
@ -478,10 +478,12 @@ gdk_window_class_init (GdkWindowClass *klass)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
device_removed_cb (GdkDeviceManager *device_manager,
|
seat_removed_cb (GdkDisplay *display,
|
||||||
GdkDevice *device,
|
GdkSeat *seat,
|
||||||
GdkWindow *window)
|
GdkWindow *window)
|
||||||
{
|
{
|
||||||
|
GdkDevice *device = gdk_seat_get_pointer (seat);
|
||||||
|
|
||||||
window->devices_inside = g_list_remove (window->devices_inside, device);
|
window->devices_inside = g_list_remove (window->devices_inside, device);
|
||||||
g_hash_table_remove (window->device_cursor, device);
|
g_hash_table_remove (window->device_cursor, device);
|
||||||
|
|
||||||
@ -493,10 +495,9 @@ static void
|
|||||||
gdk_window_finalize (GObject *object)
|
gdk_window_finalize (GObject *object)
|
||||||
{
|
{
|
||||||
GdkWindow *window = GDK_WINDOW (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 (gdk_window_get_display (window),
|
||||||
g_signal_handlers_disconnect_by_func (device_manager, device_removed_cb, window);
|
seat_removed_cb, window);
|
||||||
|
|
||||||
if (!GDK_WINDOW_DESTROYED (window))
|
if (!GDK_WINDOW_DESTROYED (window))
|
||||||
{
|
{
|
||||||
@ -1287,7 +1288,6 @@ gdk_window_new (GdkWindow *parent,
|
|||||||
gboolean native;
|
gboolean native;
|
||||||
GdkEventMask event_mask;
|
GdkEventMask event_mask;
|
||||||
GdkWindow *real_parent;
|
GdkWindow *real_parent;
|
||||||
GdkDeviceManager *device_manager;
|
|
||||||
|
|
||||||
g_return_val_if_fail (attributes != NULL, NULL);
|
g_return_val_if_fail (attributes != NULL, NULL);
|
||||||
|
|
||||||
@ -1451,10 +1451,8 @@ gdk_window_new (GdkWindow *parent,
|
|||||||
(attributes->cursor) :
|
(attributes->cursor) :
|
||||||
NULL));
|
NULL));
|
||||||
|
|
||||||
device_manager = gdk_display_get_device_manager (gdk_window_get_display (parent));
|
g_signal_connect (gdk_window_get_display (parent), "seat-removed",
|
||||||
g_signal_connect (device_manager, "device-removed",
|
G_CALLBACK (seat_removed_cb), window);
|
||||||
G_CALLBACK (device_removed_cb), window);
|
|
||||||
|
|
||||||
|
|
||||||
if ((_gdk_gl_flags & (GDK_GL_ALWAYS | GDK_GL_DISABLE)) == GDK_GL_ALWAYS)
|
if ((_gdk_gl_flags & (GDK_GL_ALWAYS | GDK_GL_DISABLE)) == GDK_GL_ALWAYS)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user