[gtk/gtk3-a11y-leak: 1/2] a11y: Fix ref counting in tree views
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/gtk3-a11y-leak: 1/2] a11y: Fix ref counting in tree views
- Date: Fri, 11 Jun 2021 12:57:24 +0000 (UTC)
commit d4f62b44d47e3dddfb57add4f1f76cab0297584d
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Jun 11 08:53:46 2021 -0400
a11y: Fix ref counting in tree views
GtkContainerCellAccessible wasn't unsetting accessible
parents. Fix that.
By itself, this doesn't help for freeing a memory leak,
since AtkObject keeps a ref on its parent, so we never
free the GtkContainerCellAccessible as long as it has children.
gtk/a11y/gtkcontainercellaccessible.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
---
diff --git a/gtk/a11y/gtkcontainercellaccessible.c b/gtk/a11y/gtkcontainercellaccessible.c
index a756e3cadf..a40446fb47 100644
--- a/gtk/a11y/gtkcontainercellaccessible.c
+++ b/gtk/a11y/gtkcontainercellaccessible.c
@@ -30,12 +30,19 @@ struct _GtkContainerCellAccessiblePrivate
G_DEFINE_TYPE_WITH_PRIVATE (GtkContainerCellAccessible, gtk_container_cell_accessible,
GTK_TYPE_CELL_ACCESSIBLE)
+static void
+unset_child (gpointer child)
+{
+ atk_object_set_parent (ATK_OBJECT (child), NULL);
+ g_object_unref (child);
+}
+
static void
gtk_container_cell_accessible_finalize (GObject *obj)
{
GtkContainerCellAccessible *container = GTK_CONTAINER_CELL_ACCESSIBLE (obj);
- g_list_free_full (container->priv->children, g_object_unref);
+ g_list_free_full (container->priv->children, unset_child);
G_OBJECT_CLASS (gtk_container_cell_accessible_parent_class)->finalize (obj);
}
@@ -157,6 +164,7 @@ gtk_container_cell_accessible_remove_child (GtkContainerCellAccessible *containe
g_return_if_fail (GTK_IS_CELL_ACCESSIBLE (child));
g_return_if_fail (container->priv->n_children > 0);
+ atk_object_set_parent (ATK_OBJECT (child), NULL);
container->priv->children = g_list_remove (container->priv->children, child);
container->priv->n_children--;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]