diff options
author | Keith Packard <keithp@neko.keithp.com> | 2006-12-30 21:52:22 -0800 |
---|---|---|
committer | Keith Packard <keithp@neko.keithp.com> | 2006-12-30 21:52:22 -0800 |
commit | f05dd384d38c76dd9662933a03625dfef5b1c81f (patch) | |
tree | 2caf20ab5b31906e91f6c62a4d4d7557b30c5370 /randr | |
parent | 06a4be5e7a5371881106b6f51368330a33b26401 (diff) |
Use RRScreenSetSizeRange in 1.0 compat. Check RRGetInfo for error.
The RRScreenSizeSetRange function is used externally for 1.2 API drivers,
but can also be used in the 1.0 compatibility code. This also ensures that
the right changed bits are set so that clients are correctly notified when
the range changes.
RRGetInfo can return an error, use that to return BadAlloc to clients
instead of blindly going on with various requests.
Diffstat (limited to 'randr')
-rw-r--r-- | randr/rrinfo.c | 23 | ||||
-rw-r--r-- | randr/rrscreen.c | 9 |
2 files changed, 15 insertions, 17 deletions
diff --git a/randr/rrinfo.c b/randr/rrinfo.c index 85426f654..797cdb1b4 100644 --- a/randr/rrinfo.c +++ b/randr/rrinfo.c @@ -169,18 +169,7 @@ RRScanOldConfig (ScreenPtr pScreen, Rotation rotations) if (height > maxHeight) maxHeight = height; } - if (minWidth != pScrPriv->minWidth) { - pScrPriv->minWidth = minWidth; pScrPriv->changed = TRUE; - } - if (maxWidth != pScrPriv->maxWidth) { - pScrPriv->maxWidth = maxWidth; pScrPriv->changed = TRUE; - } - if (minHeight != pScrPriv->minHeight) { - pScrPriv->minHeight = minHeight; pScrPriv->changed = TRUE; - } - if (maxHeight != pScrPriv->maxHeight) { - pScrPriv->maxHeight = maxHeight; pScrPriv->changed = TRUE; - } + RRScreenSetSizeRange (pScreen, minWidth, minHeight, maxWidth, maxHeight); /* notice current mode */ if (newMode) @@ -219,7 +208,6 @@ RRGetInfo (ScreenPtr pScreen) return TRUE; } -#if RANDR_12_INTERFACE /* * Register the range of sizes for the screen */ @@ -234,12 +222,19 @@ RRScreenSetSizeRange (ScreenPtr pScreen, if (!pScrPriv) return; + if (pScrPriv->minWidth == minWidth && pScrPriv->minHeight == minHeight && + pScrPriv->maxWidth == maxWidth && pScrPriv->maxHeight == maxHeight) + { + return; + } + pScrPriv->minWidth = minWidth; pScrPriv->minHeight = minHeight; pScrPriv->maxWidth = maxWidth; pScrPriv->maxHeight = maxHeight; + pScrPriv->changed = TRUE; + pScrPriv->configChanged = TRUE; } -#endif #ifdef RANDR_10_INTERFACE static Bool diff --git a/randr/rrscreen.c b/randr/rrscreen.c index 8ee126af9..7b0fbb8e3 100644 --- a/randr/rrscreen.c +++ b/randr/rrscreen.c @@ -239,7 +239,8 @@ ProcRRGetScreenSizeRange (ClientPtr client) if (pScrPriv) { - RRGetInfo (pScreen); + if (!RRGetInfo (pScreen)) + return BadAlloc; rep.minWidth = pScrPriv->minWidth; rep.minHeight = pScrPriv->minHeight; rep.maxWidth = pScrPriv->maxWidth; @@ -359,7 +360,8 @@ ProcRRGetScreenResources (ClientPtr client) rep.pad = 0; if (pScrPriv) - RRGetInfo (pScreen); + if (!RRGetInfo (pScreen)) + return BadAlloc; if (!pScrPriv) { @@ -603,7 +605,8 @@ ProcRRGetScreenInfo (ClientPtr client) rep.pad = 0; if (pScrPriv) - RRGetInfo (pScreen); + if (!RRGetInfo (pScreen)) + return BadAlloc; output = RRFirstOutput (pScreen); |