summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cfg-mplayer.h3
-rw-r--r--libvo/x11_common.c6
2 files changed, 9 insertions, 0 deletions
diff --git a/cfg-mplayer.h b/cfg-mplayer.h
index 665f737022..4f78f7de0a 100644
--- a/cfg-mplayer.h
+++ b/cfg-mplayer.h
@@ -69,6 +69,7 @@ extern int ao_pcm_waveheader;
extern char *mDisplayName;
extern int WinID;
extern int ice_layer;
+extern int stop_xscreensaver;
#endif
#ifdef HAVE_AA
@@ -243,6 +244,8 @@ static config_t mplayer_opts[]={
{"wid", &WinID, CONF_TYPE_INT, 0, 0, 0, NULL},
{"rootwin", &WinID, CONF_TYPE_FLAG, 0, -1, 0, NULL},
{"icelayer", &ice_layer, CONF_TYPE_INT, CONF_RANGE, 0, 15, NULL},
+ {"stop_xscreensaver", &stop_xscreensaver, CONF_TYPE_FLAG, 0, 0, 1, NULL},
+ {"nostop_xscreensaver", &stop_xscreensaver, CONF_TYPE_FLAG, 0, 1, 0, NULL},
#endif
#ifdef HAVE_XINERAMA
diff --git a/libvo/x11_common.c b/libvo/x11_common.c
index a39a0e319d..e2bebcdbe6 100644
--- a/libvo/x11_common.c
+++ b/libvo/x11_common.c
@@ -55,11 +55,13 @@
#define vo_wm_WMakerStyle 4
int ice_layer=12;
+int stop_xscreensaver=0;
extern int verbose;
static int dpms_disabled=0;
static int timeout_save=0;
+static int xscreensaver_was_running=0;
char* mDisplayName=NULL;
Display* mDisplay=NULL;
@@ -798,6 +800,9 @@ void saver_on(Display *mDisplay) {
XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp);
}
+ if (xscreensaver_was_running && stop_xscreensaver)
+ system("xscreensaver -no-splash &");
+
}
void saver_off(Display *mDisplay) {
@@ -824,6 +829,7 @@ void saver_off(Display *mDisplay) {
XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp);
if (timeout_save)
XSetScreenSaver(mDisplay, 0, interval, prefer_blank, allow_exp);
+ xscreensaver_was_running = stop_xscreensaver && ! system("xscreensaver-command -exit");
// turning off screensaver
}