aboutsummaryrefslogtreecommitdiffstats
path: root/src/ephy-window.c
diff options
context:
space:
mode:
authorXan Lopez <xan@gnome.org>2009-10-23 07:51:17 +0800
committerXan Lopez <xan@gnome.org>2009-10-24 02:56:24 +0800
commit46845bbcf412994f0bb3e949178c6f72f676f70b (patch)
tree998ead5ff6fd8a86269e45313a2baa3d2afd182b /src/ephy-window.c
parentdc14e5bcab1759813aeed64af213ba067535e7e8 (diff)
downloadgsoc2013-epiphany-46845bbcf412994f0bb3e949178c6f72f676f70b.tar
gsoc2013-epiphany-46845bbcf412994f0bb3e949178c6f72f676f70b.tar.gz
gsoc2013-epiphany-46845bbcf412994f0bb3e949178c6f72f676f70b.tar.bz2
gsoc2013-epiphany-46845bbcf412994f0bb3e949178c6f72f676f70b.tar.lz
gsoc2013-epiphany-46845bbcf412994f0bb3e949178c6f72f676f70b.tar.xz
gsoc2013-epiphany-46845bbcf412994f0bb3e949178c6f72f676f70b.tar.zst
gsoc2013-epiphany-46845bbcf412994f0bb3e949178c6f72f676f70b.zip
Refactor EphyShell lifetime tracking
Stop having each EphyWindow ref the shell, and instead have the shell track all the newly created EphyWindows. When the last one is gone, quit the GTK+ mainloop. This is simpler and avoids potential reference cycles (see bug #573551). Bug #599348
Diffstat (limited to 'src/ephy-window.c')
-rw-r--r--src/ephy-window.c12
1 files changed, 1 insertions, 11 deletions
diff --git a/src/ephy-window.c b/src/ephy-window.c
index 3f53fa39d..df0c7dfb1 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -458,7 +458,6 @@ struct _EphyWindowPrivate
guint is_popup : 1;
guint present_on_insert : 1;
guint key_theme_is_emacs : 1;
- guint shell_unref : 1;
};
enum
@@ -3315,15 +3314,6 @@ 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
@@ -3642,7 +3632,7 @@ ephy_window_init (EphyWindow *window)
{
LOG ("EphyWindow initialising %p", window);
- g_object_ref (ephy_shell);
+ _ephy_embed_shell_track_object (EPHY_EMBED_SHELL (ephy_shell), G_OBJECT (window));
window->priv = EPHY_WINDOW_GET_PRIVATE (window);
}