From 2bb88affbb80a7556dfe4d5a0fb194fe4b147c4e Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Wed, 2 Feb 2005 19:27:07 +0000 Subject: Weak ref the parent window. 2005-02-02 Christian Persch * embed/ephy-embed-persist.c: (ephy_embed_persist_set_fc_parent), (ephy_embed_persist_finalize): Weak ref the parent window. --- embed/ephy-embed-persist.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'embed') diff --git a/embed/ephy-embed-persist.c b/embed/ephy-embed-persist.c index 5b02a10cc..92d7a99c8 100644 --- a/embed/ephy-embed-persist.c +++ b/embed/ephy-embed-persist.c @@ -154,9 +154,17 @@ void ephy_embed_persist_set_fc_parent (EphyEmbedPersist *persist, GtkWindow *value) { + EphyEmbedPersistPrivate *priv; + GtkWindow **wptr; + g_return_if_fail (EPHY_IS_EMBED_PERSIST (persist)); - persist->priv->fc_parent = value; + priv = persist->priv; + + priv->fc_parent = value; + wptr = &priv->fc_parent; + g_object_add_weak_pointer (G_OBJECT (priv->fc_parent), + (gpointer *) wptr); } /** @@ -447,11 +455,20 @@ static void ephy_embed_persist_finalize (GObject *object) { EphyEmbedPersist *persist = EPHY_EMBED_PERSIST (object); + EphyEmbedPersistPrivate *priv = persist->priv; + GtkWindow **wptr; + + g_free (priv->dest); + g_free (priv->source); + g_free (priv->fc_title); + g_free (priv->persist_key); - g_free (persist->priv->dest); - g_free (persist->priv->source); - g_free (persist->priv->fc_title); - g_free (persist->priv->persist_key); + if (priv->fc_parent != NULL) + { + wptr = &priv->fc_parent; + g_object_remove_weak_pointer (G_OBJECT (priv->fc_parent), + (gpointer *) wptr); + } LOG ("EphyEmbedPersist finalised %p", object); -- cgit v1.2.3