From defbb2a54509308c11c029e637353cf75c94019b Mon Sep 17 00:00:00 2001 From: reimar Date: Sat, 22 Dec 2007 11:09:43 +0000 Subject: [PATCH] Add support for XScreenSaverSuspend git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25494 b3059339-0415-0410-9bf9-f77b7e298cf2 --- configure | 25 +++++++++++++++++++++++++ libvo/x11_common.c | 22 +++++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) 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 +#include +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, ¬hing, ¬hing)) { BOOL onoff;