|
|
fdb82f |
From 4cef9f34713d20d7d87c4485a789816325ddb80a Mon Sep 17 00:00:00 2001
|
|
|
fdb82f |
From: Sebastian Keller <skeller@gnome.org>
|
|
|
fdb82f |
Date: Mon, 27 Jan 2020 00:59:56 +0100
|
|
|
fdb82f |
Subject: [PATCH 1/2] gdkseatdefault: Unref removed slave devices
|
|
|
fdb82f |
|
|
|
fdb82f |
Adding a slave device adds a ref, but removing it does not unref it.
|
|
|
fdb82f |
|
|
|
fdb82f |
https://gitlab.gnome.org/GNOME/gtk/merge_requests/1359
|
|
|
fdb82f |
---
|
|
|
fdb82f |
gdk/gdkseatdefault.c | 2 ++
|
|
|
fdb82f |
1 file changed, 2 insertions(+)
|
|
|
fdb82f |
|
|
|
fdb82f |
diff --git a/gdk/gdkseatdefault.c b/gdk/gdkseatdefault.c
|
|
|
fdb82f |
index a83901a692..98ea6335fa 100644
|
|
|
fdb82f |
--- a/gdk/gdkseatdefault.c
|
|
|
fdb82f |
+++ b/gdk/gdkseatdefault.c
|
|
|
fdb82f |
@@ -369,69 +369,71 @@ gdk_seat_default_add_slave (GdkSeatDefault *seat,
|
|
|
fdb82f |
capability, gdk_device_get_name (device));
|
|
|
fdb82f |
return;
|
|
|
fdb82f |
}
|
|
|
fdb82f |
|
|
|
fdb82f |
priv->capabilities |= capability;
|
|
|
fdb82f |
|
|
|
fdb82f |
gdk_seat_device_added (GDK_SEAT (seat), device);
|
|
|
fdb82f |
}
|
|
|
fdb82f |
|
|
|
fdb82f |
void
|
|
|
fdb82f |
gdk_seat_default_remove_slave (GdkSeatDefault *seat,
|
|
|
fdb82f |
GdkDevice *device)
|
|
|
fdb82f |
{
|
|
|
fdb82f |
GdkSeatDefaultPrivate *priv;
|
|
|
fdb82f |
GList *l;
|
|
|
fdb82f |
|
|
|
fdb82f |
g_return_if_fail (GDK_IS_SEAT_DEFAULT (seat));
|
|
|
fdb82f |
g_return_if_fail (GDK_IS_DEVICE (device));
|
|
|
fdb82f |
|
|
|
fdb82f |
priv = gdk_seat_default_get_instance_private (seat);
|
|
|
fdb82f |
|
|
|
fdb82f |
if (g_list_find (priv->slave_pointers, device))
|
|
|
fdb82f |
{
|
|
|
fdb82f |
priv->slave_pointers = g_list_remove (priv->slave_pointers, device);
|
|
|
fdb82f |
|
|
|
fdb82f |
priv->capabilities &= ~(GDK_SEAT_CAPABILITY_POINTER | GDK_SEAT_CAPABILITY_TOUCH);
|
|
|
fdb82f |
for (l = priv->slave_pointers; l; l = l->next)
|
|
|
fdb82f |
priv->capabilities |= device_get_capability (GDK_DEVICE (l->data));
|
|
|
fdb82f |
|
|
|
fdb82f |
gdk_seat_device_removed (GDK_SEAT (seat), device);
|
|
|
fdb82f |
+ g_object_unref (device);
|
|
|
fdb82f |
}
|
|
|
fdb82f |
else if (g_list_find (priv->slave_keyboards, device))
|
|
|
fdb82f |
{
|
|
|
fdb82f |
priv->slave_keyboards = g_list_remove (priv->slave_keyboards, device);
|
|
|
fdb82f |
|
|
|
fdb82f |
if (priv->slave_keyboards == NULL)
|
|
|
fdb82f |
priv->capabilities &= ~GDK_SEAT_CAPABILITY_KEYBOARD;
|
|
|
fdb82f |
|
|
|
fdb82f |
gdk_seat_device_removed (GDK_SEAT (seat), device);
|
|
|
fdb82f |
+ g_object_unref (device);
|
|
|
fdb82f |
}
|
|
|
fdb82f |
}
|
|
|
fdb82f |
|
|
|
fdb82f |
void
|
|
|
fdb82f |
gdk_seat_default_add_tool (GdkSeatDefault *seat,
|
|
|
fdb82f |
GdkDeviceTool *tool)
|
|
|
fdb82f |
{
|
|
|
fdb82f |
GdkSeatDefaultPrivate *priv;
|
|
|
fdb82f |
|
|
|
fdb82f |
g_return_if_fail (GDK_IS_SEAT_DEFAULT (seat));
|
|
|
fdb82f |
g_return_if_fail (tool != NULL);
|
|
|
fdb82f |
|
|
|
fdb82f |
priv = gdk_seat_default_get_instance_private (seat);
|
|
|
fdb82f |
|
|
|
fdb82f |
if (!priv->tools)
|
|
|
fdb82f |
priv->tools = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
|
|
|
fdb82f |
|
|
|
fdb82f |
g_ptr_array_add (priv->tools, g_object_ref (tool));
|
|
|
fdb82f |
g_signal_emit_by_name (seat, "tool-added", tool);
|
|
|
fdb82f |
}
|
|
|
fdb82f |
|
|
|
fdb82f |
void
|
|
|
fdb82f |
gdk_seat_default_remove_tool (GdkSeatDefault *seat,
|
|
|
fdb82f |
GdkDeviceTool *tool)
|
|
|
fdb82f |
{
|
|
|
fdb82f |
GdkSeatDefaultPrivate *priv;
|
|
|
fdb82f |
|
|
|
fdb82f |
g_return_if_fail (GDK_IS_SEAT_DEFAULT (seat));
|
|
|
fdb82f |
g_return_if_fail (tool != NULL);
|
|
|
fdb82f |
|
|
|
fdb82f |
--
|
|
|
fdb82f |
2.25.1
|
|
|
fdb82f |
|