]> git.0d.be Git - empathy.git/commitdiff
Use gnome-session instead of gnome-screensaver to know when session is idle
authorGiedrius Slavinskas <giedrius25@gmail.com>
Fri, 26 Jun 2009 09:08:00 +0000 (11:08 +0200)
committerXavier Claessens <xclaesse@gmail.com>
Fri, 26 Jun 2009 09:08:00 +0000 (11:08 +0200)
libempathy/empathy-idle.c

index 3ed58de923acad94b0fb0335e823a16d65ab9f5c..2ed1440fc8690d04584a8317a6256cb904e5b144 100644 (file)
@@ -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");