diff --git a/libempathy/empathy-idle.c b/libempathy/empathy-idle.c index c723079..9504519 100644 --- a/libempathy/empathy-idle.c +++ b/libempathy/empathy-idle.c @@ -77,6 +77,14 @@ enum { PROP_USE_NM }; +typedef enum { + SESSION_STATUS_AVAILABLE = 0, + SESSION_STATUS_INVISIBLE, + SESSION_STATUS_BUSY, + SESSION_STATUS_IDLE, + SESSION_STATUS_UNKNOWN +} SessionStatus; + G_DEFINE_TYPE (EmpathyIdle, empathy_idle, G_TYPE_OBJECT); static EmpathyIdle * idle_singleton = NULL; @@ -148,12 +156,15 @@ idle_ext_away_start (EmpathyIdle *idle) static void idle_session_idle_changed_cb (DBusGProxy *gs_proxy, - gboolean is_idle, + guint status, EmpathyIdle *idle) { EmpathyIdlePriv *priv; priv = GET_PRIV (idle); + + gboolean is_idle; + is_idle = (status == SESSION_STATUS_IDLE); DEBUG ("Session idle state changed, %s -> %s", priv->is_idle ? "yes" : "no", @@ -488,14 +499,13 @@ empathy_idle_init (EmpathyIdle *idle) idle, NULL); priv->gs_proxy = dbus_g_proxy_new_for_name (tp_get_bus (), - "org.gnome.ScreenSaver", - "/org/gnome/ScreenSaver", - "org.gnome.ScreenSaver"); + "org.gnome.SessionManager", + "/org/gnome/SessionManager/Presence", + "org.gnome.SessionManager.Presence"); if (priv->gs_proxy) { - dbus_g_proxy_add_signal (priv->gs_proxy, "SessionIdleChanged", - G_TYPE_BOOLEAN, - G_TYPE_INVALID); - dbus_g_proxy_connect_signal (priv->gs_proxy, "SessionIdleChanged", + dbus_g_proxy_add_signal (priv->gs_proxy, "StatusChanged", + G_TYPE_UINT, G_TYPE_INVALID); + dbus_g_proxy_connect_signal (priv->gs_proxy, "StatusChanged", G_CALLBACK (idle_session_idle_changed_cb), idle, NULL); } else {