aboutsummaryrefslogtreecommitdiffstats
path: root/shell/main.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2009-12-03 05:49:44 +0800
committerMatthew Barnes <mbarnes@redhat.com>2009-12-03 05:50:53 +0800
commitba05eccc8d0595fd229a25b5a62f302abe7ef479 (patch)
tree6cf06e4297523a1722fdb068ff193a90dc0d8456 /shell/main.c
parent86770f6b7749b08a2b7867979a2c9726941ed52e (diff)
downloadgsoc2013-evolution-ba05eccc8d0595fd229a25b5a62f302abe7ef479.tar
gsoc2013-evolution-ba05eccc8d0595fd229a25b5a62f302abe7ef479.tar.gz
gsoc2013-evolution-ba05eccc8d0595fd229a25b5a62f302abe7ef479.tar.bz2
gsoc2013-evolution-ba05eccc8d0595fd229a25b5a62f302abe7ef479.tar.lz
gsoc2013-evolution-ba05eccc8d0595fd229a25b5a62f302abe7ef479.tar.xz
gsoc2013-evolution-ba05eccc8d0595fd229a25b5a62f302abe7ef479.tar.zst
gsoc2013-evolution-ba05eccc8d0595fd229a25b5a62f302abe7ef479.zip
Revise the EShell ref-leak check to not upset Valgrind.
Diffstat (limited to 'shell/main.c')
-rw-r--r--shell/main.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/shell/main.c b/shell/main.c
index c1a4e5decf..81a6a81540 100644
--- a/shell/main.c
+++ b/shell/main.c
@@ -93,9 +93,6 @@ static gchar *requested_view = NULL;
static gchar *evolution_debug_log = NULL;
static gchar **remaining_args;
-/* Defined in <e-shell.h> */
-extern EShell *default_shell;
-
static void
categories_icon_theme_hack (void)
{
@@ -397,7 +394,7 @@ shell_force_shutdown (void)
g_assert_not_reached ();
}
-static void
+static EShell *
create_default_shell (void)
{
EShell *shell;
@@ -441,11 +438,9 @@ create_default_shell (void)
g_object_unref (client);
- /* EShell keeps its own reference to the first instance for use
- * in e_shell_get_default(), so it's safe to unreference here. */
- g_object_unref (shell);
-
g_idle_add ((GSourceFunc) idle_cb, remaining_args);
+
+ return shell;
}
#ifdef G_OS_WIN32
@@ -455,6 +450,7 @@ extern void link_shutdown (void);
gint
main (gint argc, gchar **argv)
{
+ EShell *shell;
GtkIconTheme *icon_theme;
GConfClient *client;
#ifdef DEVELOPMENT
@@ -580,7 +576,7 @@ main (gint argc, gchar **argv)
g_object_unref (client);
- create_default_shell ();
+ shell = create_default_shell ();
if (!disable_eplugin) {
/* Register built-in plugin hook types. */
@@ -597,14 +593,16 @@ main (gint argc, gchar **argv)
/* Attempt migration -after- loading all modules and plugins,
* as both shell backends and certain plugins hook into this. */
- e_shell_migrate_attempt (default_shell);
+ e_shell_migrate_attempt (shell);
gtk_main ();
/* Drop what should be the last reference to the shell.
- * Emit a warning if references are leaking somewhere. */
- g_object_unref (default_shell);
- if (E_IS_SHELL (default_shell))
+ * That will cause e_shell_get_default() to henceforth
+ * return NULL. Use that to check for reference leaks. */
+ g_object_unref (shell);
+
+ if (e_shell_get_default () != NULL)
g_warning ("Shell not finalized on exit");
gtk_accel_map_save (e_get_accels_filename ());