diff options
author | laaz <laaz@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-04-09 22:27:27 +0000 |
---|---|---|
committer | laaz <laaz@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-04-09 22:27:27 +0000 |
commit | 77f6df6ba711ed88ffb3cb49da6b37637dc36e4e (patch) | |
tree | 9b43546fb3debc10d09867ce7b722968e7a6934f /libvo/vo_xv.c | |
parent | ca34f5e699df0478f0d1842a8c766d472ec3e1a6 (diff) | |
download | mpv-77f6df6ba711ed88ffb3cb49da6b37637dc36e4e.tar.bz2 mpv-77f6df6ba711ed88ffb3cb49da6b37637dc36e4e.tar.xz |
Screensaver and monitor powersafe function is switched off when playing a
movie.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@323 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo/vo_xv.c')
-rw-r--r-- | libvo/vo_xv.c | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/libvo/vo_xv.c b/libvo/vo_xv.c index 06d38097fb..d0629b3908 100644 --- a/libvo/vo_xv.c +++ b/libvo/vo_xv.c @@ -24,6 +24,7 @@ LIBVO_EXTERN(xv) #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 Window mRoot; 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 drwcX,drwcY,dwidth,dheight,mFullscreen; 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 @@ static uint32_t init(uint32_t width, uint32_t height, uint32_t d_width, uint32_t 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, ¬hing, ¬hing)) + { + 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 @@ static uint32_t query_format(uint32_t format) return 0; } -static void uninit(void) { } +static void uninit(void) { + int nothing; + if (DPMSQueryExtension(mydisplay, ¬hing, ¬hing)) + { + if (dpms_disabled) + { + DPMSEnable(mydisplay); // restoring power saving settings + DPMSQueryExtension(mydisplay, ¬hing, ¬hing); + } + } + + 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); + } + + +} |