[PATCH] Update lastDeviceEventTime in XResetScreenSaver

Julien Cristau jcristau at debian.org
Sat Jan 2 03:58:40 PST 2010

From: Lubos Lunak <l.lunak at suse.cz>

After xserver commit 6b5978dcf1f7ac3ecc2f22df06f7000f360e2066
(Do not reset lastDeviceEventTime when we do dixSaveScreens)
applications using XResetScreenSaver() no longer prevent the KDE
screensaver from activating, which uses XScreenSaverQueryInfo() to
detect the idle time and activates after a specified timeout. After this
commit there appears to be no way to detect that XResetScreenSaver() has
been used (the IDLE timer is presumably affected as well).

X.Org bug#25855 <http://bugs.freedesktop.org/show_bug.cgi?id=25855>
 dix/dispatch.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/dix/dispatch.c b/dix/dispatch.c
index 982c808..1bd9bfd 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -3517,6 +3517,11 @@ int ProcForceScreenSaver(ClientPtr client)
     rc = dixSaveScreens(client, SCREEN_SAVER_FORCER, (int)stuff->mode);
     if (rc != Success)
 	return rc;
+    if (stuff->mode == ScreenSaverReset)
+    {
+        UpdateCurrentTimeIf();
+        lastDeviceEventTime = currentTime;
+    }
     return client->noClientException;

More information about the xorg-devel mailing list