diff -Nru ../vdr/vdr-plugin-xineliboutput-1.0.0~rc2/gnome_screensaver.c vdr-plugin-xineliboutput-1.0.0~rc2/gnome_screensaver.c
--- ../vdr/vdr-plugin-xineliboutput-1.0.0~rc2/gnome_screensaver.c	1970-01-01 01:00:00.000000000 +0100
+++ vdr-plugin-xineliboutput-1.0.0~rc2/gnome_screensaver.c	2007-07-02 14:28:21.000000000 +0100
@@ -0,0 +1,122 @@
+/*
+ * 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 <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+
+#define NEED_x_syslog
+#define LOG_MODULENAME "[vdr-fe]    "
+
+#include "logdefs.h"
+#include "gnome_screensaver.h"
+
+#define GS_SERVICE   "org.gnome.ScreenSaver"
+#define GS_PATH      "/org/gnome/ScreenSaver"
+#define GS_INTERFACE "org.gnome.ScreenSaver"
+
+#define GS_APPLICATION_NAME     "vdr-sxfe"
+#define GS_REASON_FOR_INHIBIT   "Watching TV"
+
+// Log Messages
+#define MSG_OpenBusConnectionError "Failed to open connection to bus: %s"
+#define MSG_RemoteMethodException "Caught remote method exception %s: %s"
+#define MSG_GnomeAPI215Failed "GNOME screensaver 2.15 API failed, trying 2.14 API"
+#define MSG_GError "Error: %s"
+#define MSG_GNOMEScreensaverEnabled "GNOME screensaver enabled"
+#define MSG_GNOMEScreensaverDisabled "GNOME screensaver disabled"
+
+static guint32 cookie;
+
+void gnome_screensaver_control(int enable)
+{
+    DBusGConnection *connection;
+    GError *error;
+    DBusGProxy *proxy;
+    gboolean ret;
+
+    g_type_init();
+
+    /* Get a connection to the session bus */
+    error = NULL;
+    connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
+    if (connection == NULL) {
+	LOGERR(MSG_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, 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) {
+            LOGERR(MSG_GnomeAPI215Failed);
+            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) {
+            LOGERR(MSG_GnomeAPI215Failed);
+            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) {
+            LOGERR(MSG_RemoteMethodException, dbus_g_error_get_name(error), error->message);
+        }
+        else {
+            LOGERR(MSG_GError, error->message);
+        }
+        g_error_free(error);
+    }
+    else {
+        LOGMSG(enable ? MSG_GNOMEScreensaverEnabled : MSG_GNOMEScreensaverDisabled);
+    }
+
+    g_object_unref(proxy);
+}
diff -Nru ../vdr/vdr-plugin-xineliboutput-1.0.0~rc2/gnome_screensaver.h vdr-plugin-xineliboutput-1.0.0~rc2/gnome_screensaver.h
--- ../vdr/vdr-plugin-xineliboutput-1.0.0~rc2/gnome_screensaver.h	1970-01-01 01:00:00.000000000 +0100
+++ vdr-plugin-xineliboutput-1.0.0~rc2/gnome_screensaver.h	2007-06-29 14:41:36.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 -Nru ../vdr/vdr-plugin-xineliboutput-1.0.0~rc2/Makefile vdr-plugin-xineliboutput-1.0.0~rc2/Makefile
--- ../vdr/vdr-plugin-xineliboutput-1.0.0~rc2/Makefile	2007-06-30 13:52:59.000000000 +0100
+++ vdr-plugin-xineliboutput-1.0.0~rc2/Makefile	2007-07-02 15:10:58.000000000 +0100
@@ -27,6 +27,9 @@
 
     ifeq ($(XINELIBOUTPUT_X11), 1)
         #$(warning Detected X11)
+
+        # Check for DBUS libs, if they exist we'll compile gnome screensaver support
+        XINELIBOUTPUT_DBUS = $(shell (pkg-config --exists dbus-glib-1 >/dev/null 2>&1 && echo "1") || echo "0")
     else
         $(warning ********************************************************)
         $(warning X11 not detected ! X11 frontends will not be compiled.  )
@@ -46,6 +49,7 @@
 
 USE_ICONV = 1
 #XINELIBOUTPUT_X11        = 1
+#XINELIBOUTPUT_DBUS       = 1
 #XINELIBOUTPUT_FB         = 1
 #XINELIBOUTPUT_XINEPLUGIN = 1
 #XINELIBOUTPUT_VDRPLUGIN  = 1
@@ -233,6 +237,14 @@
   DEFINES += -DSTARTUP_IMAGE_FILE='"$(STARTUP_IMAGE_FILE)"'
 endif
 
+# dbus define, libs and includes for gnome screensaver support
+ifeq ($(XINELIBOUTPUT_DBUS), 1)
+  DEFINES   += -DHAVE_DBUS_GLIB
+  LIBS_DBUS += $(shell pkg-config --libs dbus-glib-1 2>/dev/null)
+  INCLUDES  += $(shell pkg-config --cflags dbus-glib-1 2>/dev/null)
+endif
+
+
 
 ###
 ### configuration
@@ -259,8 +271,13 @@
 endif
 
 ifeq ($(XINELIBOUTPUT_X11), 1)
-  OBJS_SXFE_SO = xine_sxfe_frontend.o xine/post.o
-  OBJS_SXFE = xine_sxfe_frontend_standalone.o xine/post.o tools/vdrdiscovery_standalone.o
+  ifeq ($(XINELIBOUTPUT_DBUS), 1)
+    OBJS_SXFE_SO = xine_sxfe_frontend.o xine/post.o gnome_screensaver.o
+    OBJS_SXFE = xine_sxfe_frontend_standalone.o xine/post.o tools/vdrdiscovery_standalone.o gnome_screensaver.o
+  else 
+    OBJS_SXFE_SO = xine_sxfe_frontend.o xine/post.o
+    OBJS_SXFE = xine_sxfe_frontend_standalone.o xine/post.o tools/vdrdiscovery_standalone.o
+  endif 
 else
   OBJS_SXFE_SO = 
   OBJS_SXFE = 
@@ -330,7 +347,7 @@
 
 xine_sxfe_frontend.o: xine_sxfe_frontend.c xine_frontend.c xine_frontend.h \
 		xine_input_vdr.h xine_osd_command.h xine/post.h logdefs.h \
-		xineliboutput.c
+		xineliboutput.c gnome_screensaver.c
 	$(CC) $(CFLAGS) -c $(DEFINES) $(INCLUDES) $(OPTFLAGS) xine_sxfe_frontend.c
 xine_fbfe_frontend.o: xine_fbfe_frontend.c xine_frontend.c xine_frontend.h \
 		xine_input_vdr.h xine_osd_command.h xine/post.h logdefs.h \
@@ -339,13 +356,15 @@
 xine_sxfe_frontend_standalone.o: xine_sxfe_frontend.c xine_frontend.c \
 		xine_frontend.h xine_input_vdr.h xine_osd_command.h \
 		xine/post.h logdefs.h xine_frontend_main.c xine_frontend_lirc.c \
-		xineliboutput.c tools/vdrdiscovery.h
+		xineliboutput.c tools/vdrdiscovery.h gnome_screensaver.c
 	$(CC) $(CFLAGS) -c $(DEFINES) -DFE_STANDALONE $(INCLUDES) $(OPTFLAGS) xine_sxfe_frontend.c -o $@
 xine_fbfe_frontend_standalone.o: xine_fbfe_frontend.c xine_frontend.c \
 		xine_frontend.h xine_input_vdr.h xine_osd_command.h \
 		xine/post.h logdefs.h xine_frontend_main.c xine_frontend_lirc.c \
 		xineliboutput.c tools/vdrdiscovery.h
 	$(CC) $(CFLAGS) -c $(DEFINES) -DFE_STANDALONE $(INCLUDES) $(OPTFLAGS) xine_fbfe_frontend.c -o $@
+gnome_screensaver.o: gnome_screensaver.c gnome_screensaver.h
+	$(CC) $(CFLAGS) -c $(DEFINES) -DFE_STANDALONE $(INCLUDES) $(OPTFLAGS) gnome_screensaver.c
 
 
 ###
@@ -383,11 +402,11 @@
 
 ifeq ($(XINELIBOUTPUT_X11), 1)
 $(VDRPLUGIN_SXFE_SO): $(OBJS_SXFE_SO)
-	$(CC) $(CFLAGS) $(LDFLAGS_SO) $(OBJS_SXFE_SO) $(LIBS_X11) $(LIBS_XINE) -o $@
+	$(CC) $(CFLAGS) $(LDFLAGS_SO) $(OBJS_SXFE_SO) $(LIBS_X11) ${LIBS_DBUS} $(LIBS_XINE) -o $@
 	@-rm -rf $(LIBDIR)/$(VDRPLUGIN_SXFE_SO).$(VERSION)
 	@cp $@ $(LIBDIR)/$(VDRPLUGIN_SXFE_SO).$(VERSION)
 $(VDRSXFE): $(OBJS_SXFE)
-	$(CC) -g $(OBJS_SXFE) $(LIBS_X11) -ljpeg $(LIBS_XINE) -o $@
+	$(CC) -g $(OBJS_SXFE) $(LIBS_X11) ${LIBS_DBUS} -ljpeg $(LIBS_XINE) -o $@
 endif
 
 ifeq ($(XINELIBOUTPUT_FB), 1)
diff -Nru ../vdr/vdr-plugin-xineliboutput-1.0.0~rc2/xine_sxfe_frontend.c vdr-plugin-xineliboutput-1.0.0~rc2/xine_sxfe_frontend.c
--- ../vdr/vdr-plugin-xineliboutput-1.0.0~rc2/xine_sxfe_frontend.c	2007-03-17 12:41:21.000000000 +0000
+++ vdr-plugin-xineliboutput-1.0.0~rc2/xine_sxfe_frontend.c	2007-06-30 13:30:07.000000000 +0100
@@ -63,6 +63,10 @@
 
 #include "xine_frontend.h"
 #include "xine/post.h"
+ 
+#ifdef HAVE_DBUS_GLIB
+#  include "gnome_screensaver.h"
+#endif
 
 #define MWM_HINTS_DECORATIONS       (1L << 1)
 #define PROP_MWM_HINTS_ELEMENTS     5
@@ -561,6 +565,10 @@
   }
 #endif
 
+#ifdef HAVE_DBUS_GLIB
+  gnome_screensaver_control(0);
+#endif
+
   this->xine_visual_type     = XINE_VISUAL_TYPE_X11;
   this->vis.display          = this->display;
   this->vis.screen           = this->screen;
@@ -881,6 +889,10 @@
 
   if(this && this->display) {
     
+#ifdef HAVE_DBUS_GLIB
+    gnome_screensaver_control(1);
+#endif
+
     if(this->xine)
       this->fe.xine_exit(this_gen);
     
