From 567179a52534b073d0be44c85a741345bca272d4 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Mon, 14 Jan 2008 12:36:44 +0000 Subject: [PATCH] Make use of PresenceChanged signal now that it got fixed in MC 4.53. Fixes bug #466960. svn path=/trunk/; revision=547 --- configure.ac | 2 +- libempathy/empathy-idle.c | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/configure.ac b/configure.ac index e1bf371c..6b4735cc 100644 --- a/configure.ac +++ b/configure.ac @@ -32,7 +32,7 @@ LIBGLADE_REQUIRED=2.0.0 LIBPANELAPPLET_REQUIRED=2.10.0 TELEPATHY_REQUIRED=0.3.1 TELEPATHY_GLIB_REQUIRED=0.7.0 -MISSION_CONTROL_REQUIRED=4.37 +MISSION_CONTROL_REQUIRED=4.53 # Uncomment that to build without deprecated symbols # AC_DEFINE(GTK_DISABLE_DEPRECATED, 1, [Disable deprecated GTK symbols]) diff --git a/libempathy/empathy-idle.c b/libempathy/empathy-idle.c index 68df1316..2f811a62 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"); -- 2.39.2