[gnome-control-center] printers: Fix possible crash after closing the panel



commit 7b6b3aac393ee29a5ab3e65ec11ea4b212bd4ade
Author: Martin Hatina <mhatina redhat com>
Date:   Thu May 28 13:53:39 2015 +0200

    printers: Fix possible crash after closing the panel
    
    Disconnect on_lockdown_settings_changed and on_permission_changed signals
    when printers panels is being disposed, so they won't get called after panel
    no longer exists.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1218003
    https://bugzilla.gnome.org/show_bug.cgi?id=750019

 panels/printers/cc-printers-panel.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)
---
diff --git a/panels/printers/cc-printers-panel.c b/panels/printers/cc-printers-panel.c
index 530be52..781b513 100644
--- a/panels/printers/cc-printers-panel.c
+++ b/panels/printers/cc-printers-panel.c
@@ -2995,10 +2995,11 @@ cc_printers_panel_init (CcPrintersPanel *self)
 
   priv->lockdown_settings = g_settings_new ("org.gnome.desktop.lockdown");
   if (priv->lockdown_settings)
-    g_signal_connect (priv->lockdown_settings,
-                      "changed",
-                      G_CALLBACK (on_lockdown_settings_changed),
-                      self);
+    g_signal_connect_object (priv->lockdown_settings,
+                             "changed",
+                             G_CALLBACK (on_lockdown_settings_changed),
+                             self,
+                             G_CONNECT_AFTER);
 
   widget = (GtkWidget*)
     gtk_builder_get_object (priv->builder, "printer-model-button");
@@ -3029,8 +3030,11 @@ cc_printers_panel_init (CcPrintersPanel *self)
     "org.opensuse.cupspkhelper.mechanism.all-edit", NULL, NULL, NULL);
   if (priv->permission != NULL)
     {
-      g_signal_connect (priv->permission, "notify",
-                        G_CALLBACK (on_permission_changed), self);
+      g_signal_connect_object (priv->permission,
+                               "notify",
+                               G_CALLBACK (on_permission_changed),
+                               self,
+                               G_CONNECT_AFTER);
       on_permission_changed (priv->permission, NULL, self);
     }
   else


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