changeset 322:4e69a8e2700a

Screensaver and monitor powersafe function is switched off when playing a movie.
author laaz
date Mon, 09 Apr 2001 22:27:27 +0000
parents 237b5f54bb78
children 639dec99c0fd
files libvo/vo_x11.c libvo/vo_xv.c
diffstat 2 files changed, 92 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/vo_x11.c	Mon Apr 09 21:28:44 2001 +0000
+++ b/libvo/vo_x11.c	Mon Apr 09 22:27:27 2001 +0000
@@ -28,6 +28,7 @@
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
 #include <X11/extensions/XShm.h>
+#include <X11/extensions/dpms.h>
 #ifdef HAVE_XF86VM
 #include <X11/extensions/xf86vmode.h>
 #endif
@@ -66,6 +67,8 @@
 static XWindowAttributes attribs;
 static int X_already_started=0;
 
+static int timeout_save=0;
+static int dpms_disabled=0;
 //static int vo_dwidth,vo_dheight;
 
 #define SH_MEM
@@ -111,6 +114,7 @@
 static uint32_t init( uint32_t width,uint32_t height,uint32_t d_width,uint32_t d_height,uint32_t fullscreen,char *title,uint32_t format )
 {
  int screen;
+ int interval, prefer_blank, allow_exp, nothing;
  unsigned int fg,bg;
  char *hello=( title == NULL ) ? "X11 render" : title;
  char *name=":0.0";
@@ -138,7 +142,6 @@
    fprintf( stderr,"Can not open display\n" );
    return -1;
   }
-
  screen=DefaultScreen( mDisplay );
 
  hint.x=0;
@@ -337,6 +340,24 @@
 
 // vo_initthread( mThread );
 
+ if (DPMSQueryExtension(mDisplay, &nothing, &nothing))
+ {
+     BOOL onoff;
+     CARD16 state;
+     DPMSInfo(mDisplay, &state, &onoff);
+     if (onoff)
+     {
+	 printf ("Disabling DPMS\n");
+	 dpms_disabled=1;
+         DPMSDisable(mDisplay);  // monitor powersave off
+     }
+ }
+
+ XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp);
+ if (timeout_save)                                                       
+   XSetScreenSaver(mDisplay, 0, interval, prefer_blank, allow_exp);
+			     // switching off screensaver
+
  return 0;
 }
 
@@ -528,9 +549,35 @@
 }
 
 
+
 static void
 uninit(void)
 {
+
+ int nothing;
+
+// DMPSEnable doesn't work if there isn't a DPMSQueryExtension after it.
+// XSetScreenSaver doesn't work if there isn't an XGetScreensaver after it.
+
+if (dpms_disabled)
+ {
+     if (DPMSQueryExtension(mDisplay, &nothing, &nothing))
+     {
+         printf ("Enabling DPMS\n");
+         DPMSEnable(mDisplay);  // restoring power saving settings
+	 DPMSQueryExtension(mDisplay, &nothing, &nothing);
+     }
+ }
+
+ if (timeout_save)
+ {
+     int dummy, interval, prefer_blank, allow_exp;
+     XGetScreenSaver(mDisplay, &dummy, &interval, &prefer_blank, &allow_exp);
+     XSetScreenSaver(mDisplay, timeout_save, interval, prefer_blank, allow_exp); // screensaver
+     XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp);
+ }
+
+
 #ifdef HAVE_XF86VM
         if (vidmodes!=NULL)
         {
--- a/libvo/vo_xv.c	Mon Apr 09 21:28:44 2001 +0000
+++ b/libvo/vo_xv.c	Mon Apr 09 22:27:27 2001 +0000
@@ -24,6 +24,7 @@
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
 #include <X11/extensions/XShm.h>
+#include <X11/extensions/dpms.h>
 #include <errno.h>
 
 #include "x11_common.h"
@@ -78,6 +79,9 @@
 static uint32_t               drwX,drwY,drwWidth,drwHeight,drwBorderWidth,drwDepth;
 static uint32_t               drwcX,drwcY,dwidth,dheight,mFullscreen;
 
+static int timeout_save=0;
+static int dpms_disabled=0;
+
 /*
  * connect to server, create and map window,
  * allocate colors and (shared) memory
@@ -85,6 +89,7 @@
 static uint32_t init(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t fullscreen, char *title, uint32_t format)
 {
  int screen;
+ int nothing, interval, prefer_blank, allow_exp;
  char *hello = (title == NULL) ? "Xv render" : title;
  char *name = ":0.0";
  XSizeHints hint;
@@ -198,6 +203,24 @@
        drwHeight=(dheight > vo_screenheight?vo_screenheight:dheight);
        fprintf( stderr,"[xv-fs] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight );
       }
+
+    if (DPMSQueryExtension(mydisplay, &nothing, &nothing))
+    {
+	BOOL onoff;
+	CARD16 state;
+	DPMSInfo(mydisplay, &state, &onoff);
+	if (onoff)
+	{
+	    dpms_disabled=1;
+	    DPMSDisable(mydisplay);  // monitor powersave off
+	}
+    }
+
+    XGetScreenSaver(mydisplay, &timeout_save, &interval, &prefer_blank, &allow_exp);
+    if (timeout_save)
+	XSetScreenSaver(mydisplay, 0, interval, prefer_blank, allow_exp);
+			// switching off screensaver
+
      return 0;
     }
   }
@@ -388,7 +411,27 @@
  return 0;
 }
 
-static void uninit(void) { }
+static void uninit(void) {
+ int nothing;
+ if (DPMSQueryExtension(mydisplay, &nothing, &nothing))
+ {
+     if (dpms_disabled)
+     {
+ 	DPMSEnable(mydisplay);  // restoring power saving settings
+	DPMSQueryExtension(mydisplay, &nothing, &nothing);
+     }
+ }
+
+ if (timeout_save)
+ {
+     int interval, prefer_blank, allow_exp, dummy;
+     XGetScreenSaver(mydisplay, &dummy, &interval, &prefer_blank, &allow_exp);
+     XSetScreenSaver(mydisplay, timeout_save, interval, prefer_blank, allow_exp);
+     XGetScreenSaver(mydisplay, &timeout_save, &interval, &prefer_blank, &allow_exp);
+ }
+
+
+}