summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-12-22 11:09:43 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-12-22 11:09:43 +0000
commitdefbb2a54509308c11c029e637353cf75c94019b (patch)
tree060a2404713124ba0d5cd7c878fbf1b98955e821
parentacec444aa5f3cda128a3be6bbc76787467dd3abe (diff)
downloadmpv-defbb2a54509308c11c029e637353cf75c94019b.tar.bz2
mpv-defbb2a54509308c11c029e637353cf75c94019b.tar.xz
Add support for XScreenSaverSuspend
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25494 b3059339-0415-0410-9bf9-f77b7e298cf2
-rwxr-xr-xconfigure25
-rw-r--r--libvo/x11_common.c22
2 files changed, 46 insertions, 1 deletions
diff --git a/configure b/configure
index 1be83af62c..d8546a96f9 100755
--- a/configure
+++ b/configure
@@ -363,6 +363,7 @@ Video output:
--enable-xinerama enable Xinerama support [autodetect]
--enable-x11 enable X11 video output [autodetect]
--enable-xshape enable XShape support [autodetect]
+ --disable-xss disable screensaver support via xss [autodetect]
--enable-fbdev enable FBDev video output [autodetect]
--enable-mlib enable mediaLib video output (Solaris) [disable]
--enable-3dfx enable obsolete /dev/3dfx video output [disable]
@@ -514,6 +515,7 @@ _mencoder=yes
_mplayer=yes
_x11=auto
_xshape=auto
+_xss=auto
_dga1=auto
_dga2=auto
_xv=auto
@@ -812,6 +814,8 @@ for ac_option do
--disable-x11) _x11=no ;;
--enable-xshape) _xshape=yes ;;
--disable-xshape) _xshape=no ;;
+ --enable-xss) _xss=yes ;;
+ --disable-xss) _xss=no ;;
--enable-xv) _xv=yes ;;
--disable-xv) _xv=no ;;
--enable-xvmc) _xvmc=yes ;;
@@ -3907,6 +3911,26 @@ else
fi
echores "$_x11"
+echocheck "Xss screensaver extensions"
+if test "$_xss" = auto ; then
+ cat > $TMPC << EOF
+#include <X11/Xlib.h>
+#include <X11/extensions/scrnsaver.h>
+int main(void) {
+ XScreenSaverSuspend(NULL, True);
+ return 0;
+}
+EOF
+ _xss=no
+ cc_check -lXss && _xss=yes
+fi
+if test "$_xss" = yes ; then
+ _def_xss='#define HAVE_XSS 1'
+ _libs_mplayer="$_libs_mplayer -lXss"
+else
+ _def_xss='#undef HAVE_XSS'
+fi
+echores "$_xss"
echocheck "DPMS"
_xdpms3=no
@@ -8497,6 +8521,7 @@ $_def_dvb
$_def_dvb_in
$_def_svga
$_def_vesa
+$_def_xss
$_def_xdpms
$_def_aa
$_def_caca
diff --git a/libvo/x11_common.c b/libvo/x11_common.c
index 5917c9605f..6520dfb95b 100644
--- a/libvo/x11_common.c
+++ b/libvo/x11_common.c
@@ -1702,6 +1702,22 @@ static void xscreensaver_enable(void)
xs_windowid = 0;
}
+static int xss_suspend(Bool suspend)
+{
+#ifndef HAVE_XSS
+ return 0;
+#else
+ int event, error, major, minor;
+ if (XScreenSaverQueryExtension(mDisplay, &event, &error) != True ||
+ XScreenSaverQueryVersion(mDisplay, &major, &minor) != True)
+ return 0;
+ if (major < 1 || major == 1 && minor < 1)
+ return 0;
+ XScreenSaverSuspend(mDisplay, suspend);
+ return 1;
+#endif
+}
+
/*
* End of XScreensaver stuff
*/
@@ -1709,6 +1725,8 @@ static void xscreensaver_enable(void)
void saver_on(Display * mDisplay)
{
+ if (xss_suspend(False))
+ return;
#ifdef HAVE_XDPMS
if (dpms_disabled)
{
@@ -1767,9 +1785,11 @@ void saver_on(Display * mDisplay)
void saver_off(Display * mDisplay)
{
-#ifdef HAVE_XDPMS
int nothing;
+ if (xss_suspend(True))
+ return;
+#ifdef HAVE_XDPMS
if (DPMSQueryExtension(mDisplay, &nothing, &nothing))
{
BOOL onoff;