]> git.0d.be Git - empathy.git/commitdiff
Define the debug object path in the header and keep CM bus names from tp_list_connect...
authorJonny Lamb <jonny.lamb@collabora.co.uk>
Mon, 20 Apr 2009 19:13:30 +0000 (20:13 +0100)
committerJonny Lamb <jonny.lamb@collabora.co.uk>
Fri, 24 Apr 2009 00:52:48 +0000 (01:52 +0100)
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
src/empathy-debug-dialog.c
src/empathy-debug-dialog.h

index 6219f36defc7e7fbe88e0512deedeb21a9a9fda6..b633eccaf4e2b227ed0cf0f9629f74e03228bad1 100644 (file)
@@ -67,6 +67,7 @@ typedef struct
   TpProxy *proxy;
   TpProxySignalConnection *signal_connection;
   gboolean paused;
+  GList *bus_names;
   gboolean dispose_run;
 } EmpathyDebugDialogPriv;
 
@@ -208,39 +209,29 @@ debug_dialog_cm_chooser_changed_cb (GtkComboBox *cm_chooser,
                                    EmpathyDebugDialog *debug_dialog)
 {
   EmpathyDebugDialogPriv *priv = GET_PRIV (debug_dialog);
-  gchar *cm;
   MissionControl *mc;
   TpDBusDaemon *dbus;
   GError *error = NULL;
-  gchar *bus_name;
+  const gchar *bus_name;
   TpConnection *connection;
 
-  mc = empathy_mission_control_dup_singleton ();
-  cm = gtk_combo_box_get_active_text (cm_chooser);
-
-  if (cm == NULL)
+  if (gtk_combo_box_get_active (cm_chooser) == -1)
     {
       DEBUG ("No CM is selected");
-      g_object_unref (mc);
       return;
     }
 
+  mc = empathy_mission_control_dup_singleton ();
   dbus = tp_dbus_daemon_dup (&error);
 
   if (error != NULL)
     {
       DEBUG ("Failed at duping the dbus daemon: %s", error->message);
-      g_free (cm);
       g_object_unref (mc);
     }
 
-  /* TODO: Fix this. */
-  bus_name = g_strdup_printf ("org.freedesktop.Telepathy.ConnectionManager.%s", cm);
-  g_free (cm);
-
-  connection = tp_connection_new (dbus, bus_name,
-      "/org/freedesktop/Telepathy/debug", &error);
-  g_free (bus_name);
+  bus_name = g_list_nth_data (priv->bus_names, gtk_combo_box_get_active (cm_chooser));
+  connection = tp_connection_new (dbus, bus_name, DEBUG_OBJECT_PATH, &error);
 
   if (error != NULL)
     {
@@ -298,6 +289,9 @@ debug_dialog_list_connection_names_cb (const gchar * const *names,
   for (i = 0; cms[i] != NULL; i++)
     gtk_combo_box_append_text (GTK_COMBO_BOX (priv->cm_chooser), cms[i]);
 
+  for (i = 0; names[i] != NULL; i++)
+    priv->bus_names = g_list_append (priv->bus_names, g_strdup (names[i]));
+
   gtk_combo_box_set_active (GTK_COMBO_BOX (priv->cm_chooser), 0);
 
   /* Fill treeview */
@@ -560,6 +554,12 @@ debug_dialog_dispose (GObject *object)
   if (priv->signal_connection)
     tp_proxy_signal_connection_disconnect (priv->signal_connection);
 
+  if (priv->bus_names)
+    {
+      g_list_foreach (priv->bus_names, (GFunc) g_free, NULL);
+      g_list_free (priv->bus_names);
+    }
+
   (G_OBJECT_CLASS (empathy_debug_dialog_parent_class)->dispose) (object);
 }
 
index ad41bfc95f313506d32290910550a4a93c8afb4f..5d98fa0a4c2ced9a98d9ea483c03f6e1fb994f63 100644 (file)
@@ -38,6 +38,8 @@ G_BEGIN_DECLS
 #define EMPATHY_DEBUG_DIALOG_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS \
     ((object), EMPATHY_TYPE_DEBUG_DIALOG, EmpathyDebugDialogClass))
 
+#define DEBUG_OBJECT_PATH "/org/freedesktop/Telepathy/debug"
+
 typedef struct _EmpathyDebugDialog EmpathyDebugDialog;
 typedef struct _EmpathyDebugDialogClass EmpathyDebugDialogClass;