]> git.0d.be Git - empathy.git/commitdiff
Make use of PresenceChanged signal now that it got fixed in MC 4.53. Fixes bug #466960.
authorXavier Claessens <xclaesse@src.gnome.org>
Mon, 14 Jan 2008 12:36:44 +0000 (12:36 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Mon, 14 Jan 2008 12:36:44 +0000 (12:36 +0000)
svn path=/trunk/; revision=547

configure.ac
libempathy/empathy-idle.c

index e1bf371ce5ec93402672f7b315f88049465f7338..6b4735cc239e68a720092b37ec2539a71720ee1b 100644 (file)
@@ -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])
index 68df13168a5ab8b15579d387bbbc4b292c825532..2f811a622760614ae96a10ce20a387c2aa09bc2e 100644 (file)
@@ -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");