diff --git a/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GnomeScreensaverManager.cs b/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GnomeScreensaverManager.cs
index ee0dae1..375d70f 100644
--- a/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GnomeScreensaverManager.cs
+++ b/src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GnomeScreensaverManager.cs
@@ -33,36 +33,45 @@ using Banshee.PlatformServices;
 
 namespace Banshee.GnomeBackend
 {
-    [Interface("org.gnome.ScreenSaver")]
-    internal interface IGnomeScreensaver
+    [Flags]
+    enum InhibitFlag
+     {
+        InhibitLoggingOut = 1,
+        InhibitUserSwitching = 2,
+        InhibitSuspending = 4,
+        InhibitIdle = 8,
+    }
+
+    [Interface("org.gnome.SessionManager")]
+    internal interface IGnomeSessionManager
     {
-        uint Inhibit (string application_name, string reason);
-        void UnInhibit (uint cookie);
+        uint Inhibit (string application_name, uint toplevel_xid, string reason, uint flags);
+        void Uninhibit (uint cookie);
     }
 
     class GnomeScreensaverManager : IScreensaverManager
     {
-        const string DBUS_INTERFACE = "org.gnome.ScreenSaver";
-        const string DBUS_PATH = "/org/gnome/ScreenSaver";
+        const string DBUS_INTERFACE = "org.gnome.SessionManager";
+        const string DBUS_PATH = "/org/gnome/SessionManager";
 
-        IGnomeScreensaver manager;
+        IGnomeSessionManager manager;
         uint? cookie;
 
         public GnomeScreensaverManager ()
         {
             if (Manager == null) {
-                Hyena.Log.Information ("GNOME screensaver service not found");
+                Hyena.Log.Information ("GNOME SessionManager service not found");
             }
         }
 
-        private IGnomeScreensaver Manager {
+        private IGnomeSessionManager Manager {
             get {
                 if (manager == null) {
                     if (!Bus.Session.NameHasOwner (DBUS_INTERFACE)) {
                         return null;
                     }
 
-                    manager = Bus.Session.GetObject<IGnomeScreensaver> (DBUS_INTERFACE, new ObjectPath (DBUS_PATH));
+                    manager = Bus.Session.GetObject<IGnomeSessionManager> (DBUS_INTERFACE, new ObjectPath (DBUS_PATH));
 
                     if (manager == null) {
                         Hyena.Log.ErrorFormat ("The {0} object could not be located on the DBus interface {1}",
@@ -73,18 +82,17 @@ namespace Banshee.GnomeBackend
             }
         }
 
-        static bool logged_error;
         public void Inhibit ()
         {
             try {
                 if (!cookie.HasValue && Manager != null) {
-                    cookie = Manager.Inhibit ("Banshee", Catalog.GetString ("Fullscreen video playback active"));
+                    // http://people.gnome.org/~mccann/gnome-session/docs/gnome-session.html#org.gnome.SessionManager.Inhibit
+                    // xid should be passed  - flags are probably right this way
+                    cookie = Manager.Inhibit ("Banshee", 0, Catalog.GetString ("Fullscreen video playback active"),
+                                              (uint)(InhibitFlag.InhibitSuspending ^ InhibitFlag.InhibitIdle));
                 }
             } catch (Exception e) {
-                if (!logged_error) {
-                    Hyena.Log.Information ("Error trying to Inhibit GNOME screensaver; probably running >= 2.91.91 gnome-screensaver which removed this API", e.Message);
-                    logged_error = true;
-                }
+                Hyena.Log.Information ("Error trying to Inhibit GNOME Session", e.Message);
             }
         }
 
@@ -92,10 +100,12 @@ namespace Banshee.GnomeBackend
         {
             try {
                 if (cookie.HasValue && Manager != null) {
-                    Manager.UnInhibit (cookie.Value);
+                    Manager.Uninhibit (cookie.Value);
                     cookie = null;
                 }
-            } catch {}
+            } catch (Exception e) {
+                Hyena.Log.Information ("Error trying to UnInhibit GNOME Session", e.Message);
+            }
         }
     }
 }
