[telepathy-mission-control/master] McdClientProxy: automatically drop capabilities if inactive and not activatable
Simon McVittie
simon.mcvittie at collabora.co.uk
Mon Oct 19 07:01:05 PDT 2009
Previously, we relied on the McdDispatcher to do this.
---
src/mcd-client-priv.h | 2 --
src/mcd-client.c | 16 +++++++++++++++-
src/mcd-dispatcher.c | 1 -
3 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/src/mcd-client-priv.h b/src/mcd-client-priv.h
index ebe7b41..f718e01 100644
--- a/src/mcd-client-priv.h
+++ b/src/mcd-client-priv.h
@@ -97,8 +97,6 @@ G_GNUC_INTERNAL const GList *_mcd_client_proxy_get_handler_filters
G_GNUC_INTERNAL gboolean _mcd_client_proxy_get_bypass_approval
(McdClientProxy *self);
-G_GNUC_INTERNAL void _mcd_client_proxy_become_incapable (McdClientProxy *self);
-
G_GNUC_INTERNAL GValueArray *_mcd_client_proxy_dup_handler_capabilities (
McdClientProxy *self);
diff --git a/src/mcd-client.c b/src/mcd-client.c
index f6ec4e1..0aca8be 100644
--- a/src/mcd-client.c
+++ b/src/mcd-client.c
@@ -1139,13 +1139,27 @@ _mcd_client_proxy_new (TpDBusDaemon *dbus_daemon,
return self;
}
+static void _mcd_client_proxy_become_incapable (McdClientProxy *self);
+
void
_mcd_client_proxy_set_inactive (McdClientProxy *self)
{
g_return_if_fail (MCD_IS_CLIENT_PROXY (self));
+ /* if unique name is already "" (i.e. known to be inactive), do nothing */
+ if (self->priv->unique_name != NULL && self->priv->unique_name[0] == '\0')
+ {
+ return;
+ }
+
g_free (self->priv->unique_name);
self->priv->unique_name = g_strdup ("");
+
+ if (!self->priv->activatable)
+ {
+ /* a handler that is neither running nor activatable is useless */
+ _mcd_client_proxy_become_incapable (self);
+ }
}
void
@@ -1241,7 +1255,7 @@ _mcd_client_proxy_get_bypass_approval (McdClientProxy *self)
return self->priv->bypass_approval;
}
-void
+static void
_mcd_client_proxy_become_incapable (McdClientProxy *self)
{
_mcd_client_proxy_take_approver_filters (self, NULL);
diff --git a/src/mcd-dispatcher.c b/src/mcd-dispatcher.c
index 2cc84da..9eef962 100644
--- a/src/mcd-dispatcher.c
+++ b/src/mcd-dispatcher.c
@@ -2097,7 +2097,6 @@ name_owner_changed_cb (TpDBusDaemon *proxy,
/* in ContactCapabilities we indicate the disappearance
* of a client by giving it an empty set of capabilities and
* filters */
- _mcd_client_proxy_become_incapable (client);
mcd_dispatcher_update_client_caps (self, client);
mcd_dispatcher_discard_client (self, client);
--
1.5.6.5
More information about the telepathy-commits
mailing list