aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/randr/rrscreen.c
diff options
context:
space:
mode:
authorMihai Moldovan <ionic@ionic.de>2015-07-03 17:07:30 +0200
committerMihai Moldovan <ionic@ionic.de>2015-07-03 17:07:30 +0200
commitca19c342ca6f829894fb0cdd652bd2731029084b (patch)
treee2c3bc4d3d91cd04767461d21dc6261cf20ce4f5 /nx-X11/programs/Xserver/randr/rrscreen.c
parent61013ec4fd85e9f8eef1f34bf6d1855ba26211d7 (diff)
parentd088698324d5e71cb93ccd429f084729ba07872c (diff)
downloadnx-libs-ca19c342ca6f829894fb0cdd652bd2731029084b.tar.gz
nx-libs-ca19c342ca6f829894fb0cdd652bd2731029084b.tar.bz2
nx-libs-ca19c342ca6f829894fb0cdd652bd2731029084b.zip
Merge branch 'uli42-pr/backported_fixes' into arctica-3.6.x
Attributes GH PR #50: https://github.com/ArcticaProject/nx-libs/pull/50
Diffstat (limited to 'nx-X11/programs/Xserver/randr/rrscreen.c')
-rw-r--r--nx-X11/programs/Xserver/randr/rrscreen.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/nx-X11/programs/Xserver/randr/rrscreen.c b/nx-X11/programs/Xserver/randr/rrscreen.c
index 9b3935e03..a3851bd60 100644
--- a/nx-X11/programs/Xserver/randr/rrscreen.c
+++ b/nx-X11/programs/Xserver/randr/rrscreen.c
@@ -228,7 +228,7 @@ ProcRRGetScreenSizeRange (ClientPtr client)
rrScrPrivPtr pScrPriv;
int rc;
- REQUEST_SIZE_MATCH(xRRGetScreenInfoReq);
+ REQUEST_SIZE_MATCH(xRRGetScreenSizeRangeReq);
#ifndef NXAGENT_SERVER
rc = dixLookupWindow(&pWin, stuff->window, client, DixReadAccess);
#else
@@ -677,8 +677,9 @@ ProcRRGetScreenInfo (ClientPtr client)
rep.sizeID = pData->size;
rep.rate = pData->refresh;
- extraLen = (rep.nSizes * sizeof (xScreenSizes) +
- rep.nrateEnts * sizeof (CARD16));
+ extraLen = rep.nSizes * sizeof (xScreenSizes);
+ if (has_rate)
+ extraLen += rep.nrateEnts * sizeof (CARD16);
if (extraLen)
{
@@ -744,6 +745,7 @@ ProcRRGetScreenInfo (ClientPtr client)
swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n);
swapl(&rep.timestamp, n);
+ swapl(&rep.configTimestamp, n);
swaps(&rep.rotation, n);
swaps(&rep.nSizes, n);
swaps(&rep.sizeID, n);
@@ -938,6 +940,18 @@ ProcRRSetScreenConfig (ClientPtr client)
width = mode->mode.height;
height = mode->mode.width;
}
+
+ if (width < pScrPriv->minWidth || pScrPriv->maxWidth < width) {
+ client->errorValue = width;
+ free(pData);
+ return BadValue;
+ }
+ if (height < pScrPriv->minHeight || pScrPriv->maxHeight < height) {
+ client->errorValue = height;
+ free(pData);
+ return BadValue;
+ }
+
if (width != pScreen->width || height != pScreen->height)
{
int c;
@@ -963,15 +977,10 @@ ProcRRSetScreenConfig (ClientPtr client)
if (!RRCrtcSet (crtc, mode, 0, 0, stuff->rotation, 1, &output))
rep.status = RRSetConfigFailed;
- #ifndef NXAGENT_SERVER /* Bug 21987 */
- else
- rep.status = RRSetConfigSuccess;
- #else
else {
- rep.status = RRSetConfigSuccess;
pScrPriv->lastSetTime = time;
+ rep.status = RRSetConfigSuccess;
}
- #endif
/*
* XXX Configure other crtcs to mirror as much as possible