[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