summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonny Lamb <jonny.lamb@collabora.co.uk>2010-12-21 15:56:57 +0000
committerJonny Lamb <jonny.lamb@collabora.co.uk>2010-12-21 15:56:57 +0000
commit6ef602298271ae2741e6e75245002684fb2ff9a6 (patch)
tree5ca1b7313960c793274b9890ea30af3c97d560a0
parent359d1c553b7135dcceebf5c80d49a81dd3521362 (diff)
mcd-client: pick up Observer.DelayApprovers
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
-rw-r--r--src/mcd-client-priv.h2
-rw-r--r--src/mcd-client.c19
2 files changed, 21 insertions, 0 deletions
diff --git a/src/mcd-client-priv.h b/src/mcd-client-priv.h
index 6e1a8c85..f20f9e99 100644
--- a/src/mcd-client-priv.h
+++ b/src/mcd-client-priv.h
@@ -99,6 +99,8 @@ G_GNUC_INTERNAL gboolean _mcd_client_proxy_get_bypass_approval
(McdClientProxy *self);
G_GNUC_INTERNAL gboolean _mcd_client_proxy_get_bypass_observers
(McdClientProxy *self);
+G_GNUC_INTERNAL gboolean _mcd_client_proxy_get_delay_approvers
+ (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 392edf0e..a7ff0258 100644
--- a/src/mcd-client.c
+++ b/src/mcd-client.c
@@ -77,6 +77,7 @@ struct _McdClientProxyPrivate
gboolean ready;
gboolean bypass_approval;
gboolean bypass_observers;
+ gboolean delay_approvers;
gboolean recover;
/* If a client was in the ListActivatableNames list, it must not be
@@ -411,6 +412,10 @@ parse_client_file (McdClientProxy *client,
g_key_file_get_boolean (file, TP_IFACE_CLIENT_HANDLER,
"BypassObservers", NULL);
+ client->priv->delay_approvers =
+ g_key_file_get_boolean (file, TP_IFACE_CLIENT_OBSERVER,
+ "DelayApprovers", NULL);
+
client->priv->recover =
g_key_file_get_boolean (file, TP_IFACE_CLIENT_OBSERVER,
"Recover", NULL);
@@ -777,6 +782,12 @@ _mcd_client_proxy_observer_get_all_cb (TpProxy *proxy,
/* by now, we at least know whether the client is running or not */
g_assert (self->priv->unique_name != NULL);
+ /* FALSE if DelayApprovers is invalid or missing is a good fallback */
+ self->priv->delay_approvers = tp_asv_get_boolean (
+ properties, "DelayApprovers", NULL);
+ DEBUG ("%s has DelayApprovers=%c", bus_name,
+ self->priv->delay_approvers ? 'T' : 'F');
+
filters = tp_asv_get_boxed (properties, "ObserverChannelFilter",
TP_ARRAY_TYPE_STRING_VARIANT_MAP_LIST);
@@ -1411,6 +1422,14 @@ _mcd_client_proxy_get_bypass_observers (McdClientProxy *self)
return self->priv->bypass_observers;
}
+gboolean
+_mcd_client_proxy_get_delay_approvers (McdClientProxy *self)
+{
+ g_return_val_if_fail (MCD_IS_CLIENT_PROXY (self), FALSE);
+
+ return self->priv->delay_approvers;
+}
+
static void
_mcd_client_proxy_become_incapable (McdClientProxy *self)
{