[gtk/wip/chergert/muxer-robustness-fix] muxer: force muxer dispoal as part of widget dispose
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/chergert/muxer-robustness-fix] muxer: force muxer dispoal as part of widget dispose
- Date: Wed, 25 Mar 2020 21:04:44 +0000 (UTC)
commit b5b836668a03b8ba56c46ed17585b5beb51749f1
Author: Christian Hergert <chergert redhat com>
Date: Wed Mar 25 14:02:59 2020 -0700
muxer: force muxer dispoal as part of widget dispose
We need to cleanup state here immediately so that we do not potentially
access the g_class private data after it been finalized. This ensures that
the borrowed reference is dropped by the muxer.
gtk/gtkactionmuxer.c | 2 ++
gtk/gtkwidget.c | 5 +++++
2 files changed, 7 insertions(+)
---
diff --git a/gtk/gtkactionmuxer.c b/gtk/gtkactionmuxer.c
index 303d26e738..26ca311efc 100644
--- a/gtk/gtkactionmuxer.c
+++ b/gtk/gtkactionmuxer.c
@@ -858,6 +858,8 @@ gtk_action_muxer_dispose (GObject *object)
g_hash_table_remove_all (muxer->observed_actions);
+ muxer->widget = NULL;
+
G_OBJECT_CLASS (gtk_action_muxer_parent_class)
->dispose (object);
}
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 6d25c73357..48ead879f0 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -7357,6 +7357,11 @@ gtk_widget_dispose (GObject *object)
GtkWidget *widget = GTK_WIDGET (object);
GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
GSList *sizegroups;
+ GtkActionMuxer *muxer;
+
+ muxer = g_object_get_qdata (G_OBJECT (widget), quark_action_muxer);
+ if (muxer != NULL)
+ g_object_run_dispose (G_OBJECT (muxer));
if (priv->children_observer)
gtk_list_list_model_clear (priv->children_observer);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]