summaryrefslogtreecommitdiff
path: root/randr/rrscreen.c
diff options
context:
space:
mode:
Diffstat (limited to 'randr/rrscreen.c')
-rw-r--r--randr/rrscreen.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/randr/rrscreen.c b/randr/rrscreen.c
index 8798b4244..811a5571b 100644
--- a/randr/rrscreen.c
+++ b/randr/rrscreen.c
@@ -766,7 +766,6 @@ ProcRRSetScreenConfig (ClientPtr client)
pScrPriv = rrGetScrPriv(pScreen);
time = ClientTimeToServerTime(stuff->timestamp);
- configTime = ClientTimeToServerTime(stuff->configTimestamp);
if (!pScrPriv)
{
@@ -788,11 +787,15 @@ ProcRRSetScreenConfig (ClientPtr client)
crtc = output->crtc;
/*
- * if the client's config timestamp is not the same as the last config
+ * If the client's config timestamp is not the same as the last config
* timestamp, then the config information isn't up-to-date and
- * can't even be validated
+ * can't even be validated.
+ *
+ * Note that the client only knows about the milliseconds part of the
+ * timestamp, so using CompareTimeStamps here would cause randr to suddenly
+ * stop working after several hours have passed (freedesktop bug #6502).
*/
- if (CompareTimeStamps (configTime, pScrPriv->lastConfigTime) != 0)
+ if (stuff->configTimestamp != pScrPriv->lastConfigTime.milliseconds)
{
rep.status = RRSetConfigInvalidConfigTime;
goto sendReply;