[evince] [shell] Do not leak settings objects when document reloads



commit 1c17408db1cb842cdde4634c41beb173ded4399a
Author: Carlos Garcia Campos <carlosgc gnome org>
Date:   Mon Jul 26 14:37:22 2010 +0200

    [shell] Do not leak settings objects when document reloads

 shell/ev-window.c |   24 ++++++++++++++----------
 1 files changed, 14 insertions(+), 10 deletions(-)
---
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 3292319..202e3c7 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -1249,18 +1249,22 @@ ev_window_setup_document (EvWindow *ev_window)
 	ev_window_title_set_document (ev_window->priv->title, document);
 	ev_window_title_set_uri (ev_window->priv->title, ev_window->priv->uri);
 
-	ev_window->priv->settings = g_settings_new (GS_SCHEMA_NAME);
-	g_signal_connect (ev_window->priv->settings,
-			  "changed::"GS_OVERRIDE_RESTRICTIONS,
-			  G_CALLBACK (override_restrictions_changed),
-			  ev_window);
+	if (!ev_window->priv->settings) {
+		ev_window->priv->settings = g_settings_new (GS_SCHEMA_NAME);
+		g_signal_connect (ev_window->priv->settings,
+				  "changed::"GS_OVERRIDE_RESTRICTIONS,
+				  G_CALLBACK (override_restrictions_changed),
+				  ev_window);
+	}
 
 #ifdef HAVE_DESKTOP_SCHEMAS
-	ev_window->priv->lockdown_settings = g_settings_new (GS_LOCKDOWN_SCHEMA_NAME);
-	g_signal_connect (ev_window->priv->lockdown_settings,
-			  "changed",
-			  G_CALLBACK (lockdown_changed),
-			  ev_window);
+	if (!ev_window->priv->lockdown_settings) {
+		ev_window->priv->lockdown_settings = g_settings_new (GS_LOCKDOWN_SCHEMA_NAME);
+		g_signal_connect (ev_window->priv->lockdown_settings,
+				  "changed",
+				  G_CALLBACK (lockdown_changed),
+				  ev_window);
+	}
 #endif
 
 	ev_window_setup_action_sensitivity (ev_window);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]