diff options
Diffstat (limited to 'video/out')
-rw-r--r-- | video/out/x11_common.c | 3 | ||||
-rw-r--r-- | video/out/x11_common.h | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/video/out/x11_common.c b/video/out/x11_common.c index 89cded6b5d..911fea3ddc 100644 --- a/video/out/x11_common.c +++ b/video/out/x11_common.c @@ -1562,12 +1562,15 @@ static void set_screensaver(struct vo_x11_state *x11, bool enabled) BOOL onoff = 0; CARD16 state; DPMSInfo(mDisplay, &state, &onoff); + if (!x11->dpms_touched && enabled) + return; // enable DPMS only we we disabled it before if (enabled != !!onoff) { MP_VERBOSE(x11, "Setting DMPS: %s.\n", enabled ? "on" : "off"); if (enabled) { DPMSEnable(mDisplay); } else { DPMSDisable(mDisplay); + x11->dpms_touched = true; } DPMSInfo(mDisplay, &state, &onoff); if (enabled != !!onoff) diff --git a/video/out/x11_common.h b/video/out/x11_common.h index 0b4a58325f..15a86978ec 100644 --- a/video/out/x11_common.h +++ b/video/out/x11_common.h @@ -41,6 +41,7 @@ struct vo_x11_state { struct mp_rect screenrc; bool screensaver_enabled; + bool dpms_touched; double screensaver_time_last; XIM xim; |