aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy
diff options
context:
space:
mode:
Diffstat (limited to 'libempathy')
-rw-r--r--libempathy/empathy-idle.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/libempathy/empathy-idle.c b/libempathy/empathy-idle.c
index 68df13168..2f811a622 100644
--- a/libempathy/empathy-idle.c
+++ b/libempathy/empathy-idle.c
@@ -83,6 +83,7 @@ static void idle_set_property (GObject *object,
GParamSpec *pspec);
static void idle_presence_changed_cb (MissionControl *mc,
McPresence state,
+ gchar *status,
EmpathyIdle *idle);
static void idle_session_idle_changed_cb (DBusGProxy *gs_proxy,
gboolean is_idle,
@@ -169,10 +170,10 @@ empathy_idle_init (EmpathyIdle *idle)
priv->is_idle = FALSE;
priv->mc = empathy_mission_control_new ();
priv->state = mission_control_get_presence_actual (priv->mc, NULL);
- idle_presence_changed_cb (priv->mc, priv->state, idle);
+ priv->status = mission_control_get_presence_message_actual (priv->mc, NULL);
dbus_g_proxy_connect_signal (DBUS_G_PROXY (priv->mc),
- "PresenceStatusActual",
+ "PresenceChanged",
G_CALLBACK (idle_presence_changed_cb),
idle, NULL);
@@ -489,19 +490,21 @@ empathy_idle_set_use_nm (EmpathyIdle *idle,
static void
idle_presence_changed_cb (MissionControl *mc,
McPresence state,
+ gchar *status,
EmpathyIdle *idle)
{
EmpathyIdlePriv *priv;
priv = GET_PRIV (idle);
+ empathy_debug (DEBUG_DOMAIN, "Presence changed to '%s' (%d)",
+ status, state);
+
g_free (priv->status);
priv->state = state;
- priv->status = mission_control_get_presence_message_actual (priv->mc, NULL);
-
- if (G_STR_EMPTY (priv->status)) {
- g_free (priv->status);
- priv->status = NULL;
+ priv->status = NULL;
+ if (!G_STR_EMPTY (status)) {
+ priv->status = g_strdup (status);
}
g_object_notify (G_OBJECT (idle), "state");