From ba43aa5a434eab9e68a73af667b4c4441b50db61 Mon Sep 17 00:00:00 2001 From: Giedrius Slavinskas Date: Fri, 26 Jun 2009 11:08:00 +0200 Subject: Use gnome-session instead of gnome-screensaver to know when session is idle --- libempathy/empathy-idle.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) (limited to 'libempathy/empathy-idle.c') diff --git a/libempathy/empathy-idle.c b/libempathy/empathy-idle.c index 3ed58de92..2ed1440fc 100644 --- a/libempathy/empathy-idle.c +++ b/libempathy/empathy-idle.c @@ -68,6 +68,14 @@ typedef enum { NM_STATE_DISCONNECTED } NMState; +typedef enum { + SESSION_STATUS_AVAILABLE, + SESSION_STATUS_INVISIBLE, + SESSION_STATUS_BUSY, + SESSION_STATUS_IDLE, + SESSION_STATUS_UNKNOWN +} SessionStatus; + enum { PROP_0, PROP_STATE, @@ -151,14 +159,17 @@ idle_ext_away_start (EmpathyIdle *idle) } static void -idle_session_idle_changed_cb (DBusGProxy *gs_proxy, - gboolean is_idle, - EmpathyIdle *idle) +idle_session_status_changed_cb (DBusGProxy *gs_proxy, + SessionStatus status, + EmpathyIdle *idle) { EmpathyIdlePriv *priv; + gboolean is_idle; priv = GET_PRIV (idle); + is_idle = (status == SESSION_STATUS_IDLE); + DEBUG ("Session idle state changed, %s -> %s", priv->is_idle ? "yes" : "no", is_idle ? "yes" : "no"); @@ -492,15 +503,14 @@ 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", - G_CALLBACK (idle_session_idle_changed_cb), + 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_status_changed_cb), idle, NULL); } else { DEBUG ("Failed to get gs proxy"); -- cgit v1.2.3