]> git.0d.be Git - empathy.git/blobdiff - src/empathy-debug-window.c
Updated Kannada translation
[empathy.git] / src / empathy-debug-window.c
index b4392c331dd741b1a74340e6f85d2ee11c69b1b8..7af66fef0f2c0bd8aed432e88f541c1e7b68ef1f 100644 (file)
@@ -348,6 +348,8 @@ proxy_invalidated_cb (TpProxy *proxy,
         gtk_list_store_set (self->priv->service_store, &iter,
             COL_PROXY, NULL,
             -1);
+
+      g_object_unref (stored_proxy);
     }
 
   /* Also, we refresh "All" selection's active buffer since it should not
@@ -390,9 +392,6 @@ debug_window_get_messages_cb (GObject *object,
        * selected service is unable to fetch debug messages */
       if (!tp_strdiff (active_service_name, proxy_service_name))
         debug_window_set_toolbar_sensitivity (self, FALSE);
-
-      /* We created the proxy for GetMessages call. Now destroy it. */
-      tp_clear_object (&debug);
       return;
     }
 
@@ -413,6 +412,8 @@ debug_window_get_messages_cb (GObject *object,
       DEBUG ("Proxy for service: %s was successful in fetching debug"
           " messages. Saving it.", proxy_service_name);
 
+      /* The store will take its own ref on the proxy preventing it to be
+       * destroyed when leaving this callback. */
       gtk_list_store_set (self->priv->service_store, &iter,
           COL_PROXY, debug,
           -1);
@@ -497,6 +498,8 @@ create_proxy_to_get_messages (EmpathyDebugWindow *self,
   tp_debug_client_get_messages_async (TP_DEBUG_CLIENT (new_proxy),
       debug_window_get_messages_cb, self);
 
+  g_object_unref (new_proxy);
+
 finally:
   g_free (name);
   tp_clear_object (&stored_proxy);
@@ -2133,6 +2136,35 @@ debug_window_finalize (GObject *object)
   (G_OBJECT_CLASS (empathy_debug_window_parent_class)->finalize) (object);
 }
 
+static void
+disable_all_debug_clients (EmpathyDebugWindow *self)
+{
+  GtkTreeIter iter;
+  gboolean valid_iter;
+  GtkTreeModel *model;
+
+  if (self->priv->service_store == NULL)
+    return;
+  model = GTK_TREE_MODEL (self->priv->service_store);
+
+  /* Skipping the first service store iter which is reserved for "All" */
+  gtk_tree_model_get_iter_first (model, &iter);
+  for (valid_iter = gtk_tree_model_iter_next (model, &iter);
+       valid_iter;
+       valid_iter = gtk_tree_model_iter_next (model, &iter))
+    {
+      TpDebugClient *debug;
+
+      gtk_tree_model_get (model, &iter,
+          COL_PROXY, &debug,
+          -1);
+
+      debug_window_set_enabled (debug, FALSE);
+
+      g_object_unref (debug);
+    }
+}
+
 static void
 debug_window_dispose (GObject *object)
 {
@@ -2142,6 +2174,9 @@ debug_window_dispose (GObject *object)
     tp_proxy_signal_connection_disconnect (
         self->priv->name_owner_changed_signal);
 
+  /* Disable Debug on all proxies */
+  disable_all_debug_clients (self);
+
   g_clear_object (&self->priv->service_store);
   g_clear_object (&self->priv->dbus);
   g_clear_object (&self->priv->am);