[evolution/wip/gsettings] Fix an EShell reference leak.
- From: Rodrigo Moya <rodrigo src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/gsettings] Fix an EShell reference leak.
- Date: Wed, 29 Jun 2011 17:21:24 +0000 (UTC)
commit 4ce8eca63545c23900e516b2c09a340161c364e0
Author: Matthew Barnes <mbarnes redhat com>
Date: Fri Mar 25 10:53:54 2011 -0400
Fix an EShell reference leak.
GApplication calls g_main_loop_quit() immediately when the last window
is destroyed, whereas we do it from an idle callback with an extra ref
on EShell to keep it alive until the idle callback runs. But because
GApplication beats us to the punch, our idle callback never runs and
the EShell reference leaks.
For now, we'll just disable the quit_mainloop() method of GApplication.
If GtkApplication grows a signal equivalent to EShell::window-destroyed,
EShell could drop its window_destroyed() method and let G[tk]Application
handle things normally.
shell/e-shell.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
---
diff --git a/shell/e-shell.c b/shell/e-shell.c
index d9dcb5d..d7ecf69 100644
--- a/shell/e-shell.c
+++ b/shell/e-shell.c
@@ -834,6 +834,14 @@ shell_open (GApplication *application,
}
static void
+shell_quit_mainloop (GApplication *application)
+{
+ /* XXX Don't allow GApplication to quit the main loop.
+ * We'll do that ourselves until GtkApplication gets
+ * a signal equivalent to EShell::window-destroyed. */
+}
+
+static void
shell_window_destroyed (EShell *shell)
{
if (e_shell_get_watched_windows (shell) == NULL)
@@ -871,6 +879,7 @@ e_shell_class_init (EShellClass *class)
application_class->startup = shell_startup;
application_class->activate = shell_activate;
application_class->open = shell_open;
+ application_class->quit_mainloop = shell_quit_mainloop;
class->window_destroyed = shell_window_destroyed;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]