[telepathy-mission-control/master] _mcd_client_proxy_add_interfaces: supersede McdDispatcher's maybe_add_client_interface

Simon McVittie simon.mcvittie at collabora.co.uk
Tue Sep 22 06:15:22 PDT 2009


Also, add all supported interfaces, even if we don't really understand
what they are.
---
 src/mcd-client-priv.h |    3 +++
 src/mcd-client.c      |   21 +++++++++++++++++++++
 src/mcd-dispatcher.c  |   49 +++----------------------------------------------
 3 files changed, 27 insertions(+), 46 deletions(-)

diff --git a/src/mcd-client-priv.h b/src/mcd-client-priv.h
index d06ce6a..ce03ad0 100644
--- a/src/mcd-client-priv.h
+++ b/src/mcd-client-priv.h
@@ -88,6 +88,9 @@ G_GNUC_INTERNAL void _mcd_client_proxy_set_active (McdClientProxy *self,
                                                    const gchar *unique_name);
 G_GNUC_INTERNAL void _mcd_client_proxy_set_activatable (McdClientProxy *self);
 
+G_GNUC_INTERNAL void _mcd_client_proxy_add_interfaces (McdClientProxy *self,
+    const gchar * const *interfaces);
+
 G_GNUC_INTERNAL gchar *_mcd_client_proxy_find_client_file (
     const gchar *client_name);
 
diff --git a/src/mcd-client.c b/src/mcd-client.c
index 3f88628..5199fc7 100644
--- a/src/mcd-client.c
+++ b/src/mcd-client.c
@@ -160,6 +160,27 @@ _mcd_client_proxy_add_cap_tokens (McdClientProxy *self,
     }
 }
 
+void
+_mcd_client_proxy_add_interfaces (McdClientProxy *self,
+                                  const gchar * const *interfaces)
+{
+    guint i;
+
+    if (interfaces == NULL)
+        return;
+
+    for (i = 0; interfaces[i] != NULL; i++)
+    {
+        if (tp_dbus_check_valid_interface_name (interfaces[i], NULL))
+        {
+            GQuark q = g_quark_from_string (interfaces[i]);
+
+            DEBUG ("%s: %s", tp_proxy_get_bus_name (self), interfaces[i]);
+            tp_proxy_add_interface_by_id ((TpProxy *) self, q);
+        }
+    }
+}
+
 static void
 _mcd_client_proxy_init (McdClientProxy *self)
 {
diff --git a/src/mcd-dispatcher.c b/src/mcd-dispatcher.c
index 1da1a18..a3f44b8 100644
--- a/src/mcd-dispatcher.c
+++ b/src/mcd-dispatcher.c
@@ -2256,40 +2256,6 @@ finally:
 }
 
 static void
-maybe_add_client_interface (TpProxy *proxy,
-                            const gchar *name)
-{
-    if (strcmp (name, TP_IFACE_CLIENT_APPROVER) == 0)
-    {
-        DEBUG ("%s is an Approver", tp_proxy_get_bus_name (proxy));
-
-        tp_proxy_add_interface_by_id (proxy,
-                                      TP_IFACE_QUARK_CLIENT_APPROVER);
-    }
-    else if (strcmp (name, TP_IFACE_CLIENT_HANDLER) == 0)
-    {
-        DEBUG ("%s is a Handler", tp_proxy_get_bus_name (proxy));
-
-        tp_proxy_add_interface_by_id (proxy,
-                                      TP_IFACE_QUARK_CLIENT_HANDLER);
-    }
-    else if (strcmp (name, TP_IFACE_CLIENT_INTERFACE_REQUESTS) == 0)
-    {
-        DEBUG ("%s supports Requests", tp_proxy_get_bus_name (proxy));
-
-        tp_proxy_add_interface_by_id (proxy,
-                                      TP_IFACE_QUARK_CLIENT_INTERFACE_REQUESTS);
-    }
-    else if (strcmp (name, TP_IFACE_CLIENT_OBSERVER) == 0)
-    {
-        DEBUG ("%s is an Observer", tp_proxy_get_bus_name (proxy));
-
-        tp_proxy_add_interface_by_id (proxy,
-                                      TP_IFACE_QUARK_CLIENT_OBSERVER);
-    }
-}
-
-static void
 get_interfaces_cb (TpProxy *proxy,
                    const GValue *out_Value,
                    const GError *error,
@@ -2299,7 +2265,6 @@ get_interfaces_cb (TpProxy *proxy,
     McdDispatcher *self = MCD_DISPATCHER (weak_object);
     /* McdDispatcherPrivate *priv = MCD_DISPATCHER_PRIV (self); */
     McdClientProxy *client;
-    gchar **arr;
     const gchar *bus_name = tp_proxy_get_bus_name (proxy);
 
     if (error != NULL)
@@ -2326,13 +2291,7 @@ get_interfaces_cb (TpProxy *proxy,
         goto finally;
     }
 
-    arr = g_value_get_boxed (out_Value);
-
-    while (arr != NULL && *arr != NULL)
-    {
-        maybe_add_client_interface (proxy, *arr);
-        arr++;
-    }
+    _mcd_client_proxy_add_interfaces (client, g_value_get_boxed (out_Value));
 
     DEBUG ("Client %s", bus_name);
 
@@ -2396,10 +2355,8 @@ parse_client_file (McdClientProxy *client,
     if (!iface_names)
         return;
 
-    for (i = 0; iface_names[i] != NULL; i++)
-    {
-        maybe_add_client_interface ((TpProxy *) client, iface_names[i]);
-    }
+    _mcd_client_proxy_add_interfaces (client,
+                                      (const gchar * const *) iface_names);
     g_strfreev (iface_names);
 
     is_approver = tp_proxy_has_interface_by_id (client,
-- 
1.5.6.5




More information about the telepathy-commits mailing list