Common subdirectories: cxfe/CVS and cxfe-mod/CVS diff -uN cxfe/cxfe.c cxfe-mod/cxfe.c --- cxfe/cxfe.c 2004-11-27 03:07:59.000000000 +0100 +++ cxfe-mod/cxfe.c 2005-01-15 06:40:05.724443072 +0100 @@ -103,8 +103,57 @@ uint32_t status; } MWMHints; +static int dpms_disabled=0; +static int timeout_save=0; +void wsScreenSaverOn( Display *mDisplay ) +{ + int nothing; + if ( dpms_disabled ) + { + if ( DPMSQueryExtension( mDisplay,¬hing,¬hing ) ) + { + if ( !DPMSEnable( mDisplay ) ) printf("DPMS restoring failed.\n"); // restoring power saving settings + else + { + // DPMS does not seem to be enabled unless we call DPMSInfo + BOOL onoff; + CARD16 state; + DPMSInfo( mDisplay,&state,&onoff ); + if ( onoff ) printf("Successfully enabled DPMS.\n"); + else printf("DPMS not enabled.\n"); + } + } + } + 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 ); + XGetScreenSaver( mDisplay,&timeout_save,&interval,&prefer_blank,&allow_exp ); + } +} +void wsScreenSaverOff( Display * mDisplay ) +{ + int interval,prefer_blank,allow_exp,nothing; + if ( DPMSQueryExtension( mDisplay,¬hing,¬hing ) ) + { + BOOL onoff; + CARD16 state; + DPMSInfo( mDisplay,&state,&onoff ); + if ( onoff ) + { + Status stat; + printf("Disabling DPMS.\n"); + dpms_disabled=1; + stat=DPMSDisable( mDisplay ); // monitor powersave off + //mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"stat: %d.\n",stat ); + } + } + XGetScreenSaver( mDisplay,&timeout_save,&interval,&prefer_blank,&allow_exp ); + if ( timeout_save ) XSetScreenSaver( mDisplay,0,interval,prefer_blank,allow_exp ); // turning off screensaver +} static void *osd_loop(void *dummy) { @@ -755,6 +804,10 @@ XLockDisplay(display); XUnmapWindow(display, window[fullscreen]); fullscreen = !fullscreen; + if (fullscreen) + wsScreenSaverOff(display); + else + wsScreenSaverOn(display); XMapRaised(display, window[fullscreen]); XSync(display, False); XTranslateCoordinates(display, window[fullscreen], @@ -920,6 +973,7 @@ } } } + char* makestring(char *string, int len) { int i; @@ -1134,6 +1188,9 @@ else completion_event = -1; + if (fullscreen) + wsScreenSaverOff(display); + XMapRaised(display, window[fullscreen]); res_h = (DisplayWidth(display, screen) * 1000 / DisplayWidthMM(display, screen)); @@ -1293,6 +1350,7 @@ if (x11) { XLockDisplay(display); + wsScreenSaverOn(display); XUnmapWindow(display, window[fullscreen]); XDestroyWindow(display, window[0]); XDestroyWindow(display, window[1]); diff -uN cxfe/main.h cxfe-mod/main.h --- cxfe/main.h 2004-11-27 02:32:28.000000000 +0100 +++ cxfe-mod/main.h 2005-01-15 06:40:29.770787472 +0100 @@ -43,6 +43,7 @@ #include #include #include +#include #include #include Common subdirectories: cxfe/termio and cxfe-mod/termio