diff -Nur MPlayer-1.0rc1.orig/configure MPlayer-1.0rc1/configure
--- MPlayer-1.0rc1.orig/configure	2006-10-23 00:32:31.000000000 +0200
+++ MPlayer-1.0rc1/configure	2006-11-11 14:02:38.000000000 +0100
@@ -257,6 +257,7 @@
   --disable-ftp          Disable ftp support [enabled]
   --disable-vstream      Disable tivo vstream client support [autodetect]
   --disable-pthreads     Disable Posix threads support [autodetect]
+  --disable-dbus-glib    Disable D-BUS GLib interface (required for GNOME screensaver support) [autodetect]
   --disable-ass          Disable internal SSA/ASS subtitles support [autodetect]
   --enable-rpath         Enable runtime linker path for extra libs [disabled]
 
@@ -1721,6 +1722,7 @@
 _musepack=auto
 _vstream=auto
 _pthreads=auto
+_dbus_glib=auto
 _ass=auto
 _rpath=no
 _asmalign_pot=auto
@@ -2033,6 +2035,8 @@
   --disable-vstream)    _vstream=no     ;;
   --enable-pthreads)    _pthreads=yes   ;;
   --disable-pthreads)   _pthreads=no    ;;
+  --enable-dbus-glib)   _dbus_glib=yes  ;;
+  --disable-dbus-glib)  _dbus_glib=no   ;;
   --enable-ass)         _ass=yes        ;;
   --disable-ass)        _ass=no         ;;
   --enable-rpath)       _rpath=yes      ;;
@@ -7029,6 +7033,19 @@
 fi
 echores "$_gethostbyname2"
 
+echocheck "D-BUS GLib interface"
+if test "$_dbus_glib" = auto && pkg-config --exists dbus-glib-1; then
+  _dbus_glib=yes
+  _inc_dbus_glib=`pkg-config --cflags dbus-glib-1 2>/dev/null`
+  _ld_dbus_glib=`pkg-config --libs dbus-glib-1 2>/dev/null`   
+fi
+  
+if test "$_dbus_glib" = yes; then
+  _def_dbus_glib='#define HAVE_DBUS_GLIB 1'
+else
+  _def_dbus_glib='#undef HAVE_DBUS_GLIB'
+fi
+echores "$_dbus_glib"
 
 # --------------- GUI specific tests begin -------------------
 echocheck "GUI"
@@ -7521,6 +7538,10 @@
 VESA_LIB = $_ld_vesa
 AA_LIB = $_ld_aa
 CACA_LIB = $_ld_caca
+DBUS_GLIB_INC = $_inc_dbus_glib
+DBUS_GLIB_LIB = $_ld_dbus_glib 
+DBUS_GLIB = $_dbus_glib
+
 
 # audio output
 OSS = $_ossaudio
@@ -8378,6 +8399,7 @@
 $_def_tga
 $_def_toolame
 $_def_twolame
+$_def_dbus_glib
 
 /* used by GUI: */
 $_def_xshape
diff -Nur MPlayer-1.0rc1.orig/help/help_mp-en.h MPlayer-1.0rc1/help/help_mp-en.h
--- MPlayer-1.0rc1.orig/help/help_mp-en.h	2006-10-23 00:32:29.000000000 +0200
+++ MPlayer-1.0rc1/help/help_mp-en.h	2006-11-11 14:02:38.000000000 +0100
@@ -679,6 +679,13 @@
 #define MSGTR_InsertingAfVolume "[Mixer] No hardware mixing, inserting volume filter.\n"
 #define MSGTR_NoVolume "[Mixer] No volume control available.\n"
 
+// gnome_screensaver.c
+#define MSGTR_OpenBusConnectionError "%s: Failed to open connection to bus: %s\n"
+#define MSGTR_RemoteMethodException "%s: Caught remote method exception %s: %s\n"
+#define MSGTR_GError "%s: Error: %s\n"
+#define MSGTR_GNOMEScreensaverEnabled "GNOME screensaver enabled\n"
+#define MSGTR_GNOMEScreensaverDisabled "GNOME screensaver disabled\n"
+
 // ====================== GUI messages/buttons ========================
 
 #ifdef HAVE_NEW_GUI
diff -Nur MPlayer-1.0rc1.orig/libvo/gnome_screensaver.c MPlayer-1.0rc1/libvo/gnome_screensaver.c
--- MPlayer-1.0rc1.orig/libvo/gnome_screensaver.c	1970-01-01 01:00:00.000000000 +0100
+++ MPlayer-1.0rc1/libvo/gnome_screensaver.c	2006-11-11 14:02:38.000000000 +0100
@@ -0,0 +1,120 @@
+/*
+ * gnome_screensaver.c v0.0.7
+ *
+ * Enable/Disable the GNOME screensaver
+ * Supports GNOME screensaver API 2.14 and 2.15
+ *
+ * Call gnome_screensaver_control(1) to enable and
+ * gnome_screensaver_control(0) to disable
+ *
+ */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <dbus/dbus-glib.h>
+
+#include "gnome_screensaver.h"
+#include "mp_msg.h"
+#include "help_mp.h"
+
+#define GS_SERVICE   "org.gnome.ScreenSaver"
+#define GS_PATH      "/org/gnome/ScreenSaver"
+#define GS_INTERFACE "org.gnome.ScreenSaver"
+
+#define GS_APPLICATION_NAME     "MPlayer"
+#define GS_REASON_FOR_INHIBIT   "Playing a movie"
+
+static guint32 cookie;
+
+void gnome_screensaver_control(int enable)
+{
+    DBusGConnection *connection;
+    GError *error;
+    DBusGProxy *proxy;
+    gboolean ret;
+    char *funcname = "gnome_screensaver_control()";
+
+    g_type_init();
+
+    /* Get a connection to the session bus */
+    error = NULL;
+    connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
+    if (connection == NULL) {
+        mp_msg(MSGT_VO, MSGL_ERR,
+               funcname, MSGTR_OpenBusConnectionError, error->message);
+        g_error_free(error);
+        return;
+    }
+
+    /* Create a proxy object */
+    proxy = dbus_g_proxy_new_for_name(connection,
+                                      GS_SERVICE, GS_PATH, GS_INTERFACE);
+
+    /* Enable the screensaver */
+    if (enable) {
+        /* First call the GNOME screensaver 2.15 API method */
+        error = NULL;
+        ret =
+            dbus_g_proxy_call(proxy, "UnInhibit", &error, G_TYPE_UINT,
+                              cookie, G_TYPE_INVALID);
+
+        /* If this fails, try the GNOME screensaver 2.14 API */
+        if (!ret && error->domain == DBUS_GERROR
+            && error->code == DBUS_GERROR_UNKNOWN_METHOD) {
+            mp_msg(MSGT_VO, MSGL_V,
+                   "%s: GNOME screensaver 2.15 API failed, trying 2.14 API\n",
+                   funcname);
+            g_error_free(error);
+            error = NULL;
+            ret =
+                dbus_g_proxy_call(proxy, "AllowActivation", &error,
+                                  G_TYPE_INVALID, G_TYPE_INVALID);
+        }
+    }
+    /* Disable the screensaver */
+    else {
+        /* First call the GNOME screensaver 2.15 API method */
+        error = NULL;
+        ret =
+            dbus_g_proxy_call(proxy, "Inhibit", &error, G_TYPE_STRING,
+                              GS_APPLICATION_NAME, G_TYPE_STRING,
+                              GS_REASON_FOR_INHIBIT, G_TYPE_INVALID,
+                              G_TYPE_UINT, cookie, G_TYPE_INVALID);
+
+        /* If this fails, try the GNOME screensaver 2.14 API */
+        if (!ret && error->domain == DBUS_GERROR
+            && error->code == DBUS_GERROR_UNKNOWN_METHOD) {
+            mp_msg(MSGT_VO, MSGL_V,
+                   "%s: GNOME screensaver 2.15 API failed, trying 2.14 API\n",
+                   funcname);
+            g_error_free(error);
+            error = NULL;
+            ret =
+                dbus_g_proxy_call(proxy, "InhibitActivation", &error,
+                                  G_TYPE_STRING, GS_REASON_FOR_INHIBIT,
+                                  G_TYPE_INVALID, G_TYPE_INVALID);
+        }
+    }
+
+    if (!ret) {
+        /* Check if it's a remote exception or a regular GError */
+        if (error->domain == DBUS_GERROR
+            && error->code == DBUS_GERROR_REMOTE_EXCEPTION) {
+            mp_msg(MSGT_VO, MSGL_ERR,
+                   funcname, MSGTR_RemoteMethodException,
+                   dbus_g_error_get_name(error), error->message);
+        }
+        else {
+            mp_msg(MSGT_VO, MSGL_ERR,
+                   funcname, MSGTR_GError, error->message);
+        }
+        g_error_free(error);
+    }
+    else {
+        mp_msg(MSGT_VO, MSGL_INFO,
+               enable ? MSGTR_GNOMEScreensaverEnabled :
+               MSGTR_GNOMEScreensaverDisabled);
+    }
+
+    g_object_unref(proxy);
+}
diff -Nur MPlayer-1.0rc1.orig/libvo/gnome_screensaver.h MPlayer-1.0rc1/libvo/gnome_screensaver.h
--- MPlayer-1.0rc1.orig/libvo/gnome_screensaver.h	1970-01-01 01:00:00.000000000 +0100
+++ MPlayer-1.0rc1/libvo/gnome_screensaver.h	2006-11-11 14:02:38.000000000 +0100
@@ -0,0 +1,6 @@
+#ifndef _GNOME_SCREENSAVER_H
+#define _GNOME_SCREENSAVER_H
+
+extern void gnome_screensaver_control(int enable);
+
+#endif /* !_GNOME_SCREENSAVER_H */
diff -Nur MPlayer-1.0rc1.orig/libvo/Makefile MPlayer-1.0rc1/libvo/Makefile
--- MPlayer-1.0rc1.orig/libvo/Makefile	2006-10-23 00:32:26.000000000 +0200
+++ MPlayer-1.0rc1/libvo/Makefile	2006-11-11 14:02:38.000000000 +0100
@@ -39,6 +39,11 @@
 SRCS += vosub_vidix.c
 endif
 
+ifeq ($(DBUS_GLIB),yes)
+SRCS += gnome_screensaver.c
+LIBAV_INC += $(DBUS_GLIB_INC)
+endif
+
 INCLUDE = -I. -I.. -I../osdep $(LIBAV_INC)
 CFLAGS  = $(INCLUDE) $(OPTFLAGS) -DMPG12PLAY
 
diff -Nur MPlayer-1.0rc1.orig/libvo/x11_common.c MPlayer-1.0rc1/libvo/x11_common.c
--- MPlayer-1.0rc1.orig/libvo/x11_common.c	2006-10-23 00:32:26.000000000 +0200
+++ MPlayer-1.0rc1/libvo/x11_common.c	2006-11-11 14:02:38.000000000 +0100
@@ -58,6 +58,10 @@
 #include "mplayer.h"
 #endif
 
+#ifdef HAVE_DBUS_GLIB
+#include "gnome_screensaver.h"
+#endif
+
 #define WIN_LAYER_ONBOTTOM               2
 #define WIN_LAYER_NORMAL                 4
 #define WIN_LAYER_ONTOP                  6
@@ -1701,8 +1705,12 @@
         timeout_save = 0;
     }
 
-    if (stop_xscreensaver)
+    if (stop_xscreensaver) {
         xscreensaver_enable();
+#ifdef HAVE_DBUS_GLIB
+        gnome_screensaver_control(1);
+#endif
+    }
     if (kdescreensaver_was_running && stop_xscreensaver)
     {
         system
@@ -1747,8 +1755,12 @@
                             allow_exp);
     }
     // turning off screensaver
-    if (stop_xscreensaver)
+    if (stop_xscreensaver) {
         xscreensaver_disable(mDisplay);
+#ifdef HAVE_DBUS_GLIB
+        gnome_screensaver_control(0);
+#endif
+    }
     if (stop_xscreensaver && !kdescreensaver_was_running)
     {
         kdescreensaver_was_running =
diff -Nur MPlayer-1.0rc1.orig/Makefile MPlayer-1.0rc1/Makefile
--- MPlayer-1.0rc1.orig/Makefile	2006-10-23 00:32:31.000000000 +0200
+++ MPlayer-1.0rc1/Makefile	2006-11-11 14:02:38.000000000 +0100
@@ -75,6 +75,7 @@
           $(DIRECTFB_LIB) \
           $(CACA_LIB) \
 	  $(VESA_LIB) \
+	  $(DBUS_GLIB_LIB) \
 
 ifeq ($(VIDIX),yes)
 VO_LIBS += vidix/libvidix.a