summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2011-05-18 19:21:58 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2011-05-19 16:45:59 +0100
commit82ff5c401a7e57ec62fea591c071a0644be1828f (patch)
tree4b359f2db5ecd3d017d33a33a14bc3e4213faa86
parent7517ff1489872b68e35f8536f552377726c5b190 (diff)
downloadtelepathy-mission-control-82ff5c401a7e57ec62fea591c071a0644be1828f.tar.gz
mcd_account_request_presence_int: emit RequestedPresence directly
-rw-r--r--src/mcd-account.c49
1 files changed, 23 insertions, 26 deletions
diff --git a/src/mcd-account.c b/src/mcd-account.c
index 039bd459..5e406913 100644
--- a/src/mcd-account.c
+++ b/src/mcd-account.c
@@ -824,7 +824,10 @@ on_connection_abort (McdConnection *connection, McdAccount *account)
_mcd_account_set_connection (account, NULL);
}
-static gboolean
+static void mcd_account_changed_property (McdAccount *account,
+ const gchar *key, const GValue *value);
+
+static void
mcd_account_request_presence_int (McdAccount *account,
TpConnectionPresenceType type,
const gchar *status, const gchar *message)
@@ -852,6 +855,21 @@ mcd_account_request_presence_int (McdAccount *account,
changed = TRUE;
}
+ if (changed)
+ {
+ GValue value = { 0 };
+
+ g_value_init (&value, TP_STRUCT_TYPE_SIMPLE_PRESENCE);
+ g_value_take_boxed (&value,
+ tp_value_array_build (3,
+ G_TYPE_UINT, type,
+ G_TYPE_STRING, status,
+ G_TYPE_STRING, message,
+ G_TYPE_INVALID));
+ mcd_account_changed_property (account, "RequestedPresence", &value);
+ g_value_unset (&value);
+ }
+
DEBUG ("Requested presence: %u %s %s",
priv->req_presence_type,
priv->req_presence_status,
@@ -862,13 +880,13 @@ mcd_account_request_presence_int (McdAccount *account,
if (!priv->enabled)
{
DEBUG ("%s not Enabled", priv->unique_name);
- return changed;
+ return;
}
if (!priv->valid)
{
DEBUG ("%s not Valid", priv->unique_name);
- return changed;
+ return;
}
}
@@ -891,8 +909,6 @@ mcd_account_request_presence_int (McdAccount *account,
priv->req_presence_status,
priv->req_presence_message);
}
-
- return changed;
}
void
@@ -1700,11 +1716,7 @@ set_requested_presence (TpSvcDBusProperties *self,
DEBUG ("setting requested presence: %d, %s, %s", type, status, message);
- if (mcd_account_request_presence_int (account, type, status, message))
- {
- mcd_account_changed_property (account, name, value);
- }
-
+ mcd_account_request_presence_int (account, type, status, message);
return TRUE;
}
@@ -3231,22 +3243,7 @@ mcd_account_request_presence (McdAccount *account,
TpConnectionPresenceType presence,
const gchar *status, const gchar *message)
{
- if (mcd_account_request_presence_int (account, presence, status, message))
- {
- GValue value = { 0 };
- GType type;
- GValueArray *va;
-
- type = TP_STRUCT_TYPE_SIMPLE_PRESENCE;
- g_value_init (&value, type);
- g_value_take_boxed (&value, dbus_g_type_specialized_construct (type));
- va = (GValueArray *) g_value_get_boxed (&value);
- g_value_set_uint (va->values, presence);
- g_value_set_static_string (va->values + 1, status);
- g_value_set_static_string (va->values + 2, message);
- mcd_account_changed_property (account, "RequestedPresence", &value);
- g_value_unset (&value);
- }
+ mcd_account_request_presence_int (account, presence, status, message);
}
static void