[epiphany] Unref EphyShell on EphyWindow's dispose method
- From: Xan Lopez <xan src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [epiphany] Unref EphyShell on EphyWindow's dispose method
- Date: Thu, 22 Oct 2009 21:01:47 +0000 (UTC)
commit 7a31887b89005519fcb012cce53adc2a6402d066
Author: Xan Lopez <xan gnome org>
Date: Thu Oct 22 20:06:54 2009 +0300
Unref EphyShell on EphyWindow's dispose method
This way we can break ref cycles that can happen when using Seed extensions.
Bug #573551
src/ephy-window.c | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
---
diff --git a/src/ephy-window.c b/src/ephy-window.c
index 61cc17c..3f53fa3 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -458,6 +458,7 @@ struct _EphyWindowPrivate
guint is_popup : 1;
guint present_on_insert : 1;
guint key_theme_is_emacs : 1;
+ guint shell_unref : 1;
};
enum
@@ -3314,6 +3315,15 @@ ephy_window_dispose (GObject *object)
destroy_fullscreen_popup (window);
G_OBJECT_CLASS (ephy_window_parent_class)->dispose (object);
+
+ /* We need to unref the shell after chaining up to the parent
+ * class, since our children widgets might need the shell to
+ * be around for some cleanup operations */
+ if (window->priv->shell_unref == FALSE)
+ {
+ g_object_unref (ephy_shell);
+ window->priv->shell_unref = TRUE;
+ }
}
static void
@@ -3834,8 +3844,6 @@ ephy_window_finalize (GObject *object)
G_OBJECT_CLASS (ephy_window_parent_class)->finalize (object);
LOG ("EphyWindow finalised %p", object);
-
- g_object_unref (ephy_shell);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]