diff options
author | Keith Packard <keithp@keithp.com> | 2009-01-30 15:43:04 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2009-01-30 15:44:45 -0800 |
commit | 648807adb059b6cfc413d41e3a37670ce850aee6 (patch) | |
tree | a7cad5f7f3f299f1a8f5bad72255f3cae1ee82a4 /randr | |
parent | 9b2958b3a2fb4b65d67916ba7e98dfd21ad434f3 (diff) |
Make RandR CRTC info report panning area instead of just crtc area
This makes the RandR info consistent with the Xinerama info.
Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 6e49fdd2c839b6244c23ce95c3ae76a1a265b986)
Diffstat (limited to 'randr')
-rw-r--r-- | randr/rrcrtc.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c index 99f7d1ea1..81ccf41c3 100644 --- a/randr/rrcrtc.c +++ b/randr/rrcrtc.c @@ -632,6 +632,7 @@ ProcRRGetCrtcInfo (ClientPtr client) RROutput *possible; int i, j, k, n; int width, height; + BoxRec panned_area; REQUEST_SIZE_MATCH(xRRGetCrtcInfoReq); crtc = LookupCrtc(client, stuff->crtc, DixReadAccess); @@ -652,11 +653,23 @@ ProcRRGetCrtcInfo (ClientPtr client) rep.sequenceNumber = client->sequence; rep.length = 0; rep.timestamp = pScrPriv->lastSetTime.milliseconds; - rep.x = crtc->x; - rep.y = crtc->y; - RRCrtcGetScanoutSize (crtc, &width, &height); - rep.width = width; - rep.height = height; + if (pScrPriv->rrGetPanning && + pScrPriv->rrGetPanning (pScreen, crtc, &panned_area, NULL, NULL) && + (panned_area.x2 > panned_area.x1) && (panned_area.y2 > panned_area.y1)) + { + rep.x = panned_area.x1; + rep.y = panned_area.y1; + rep.width = panned_area.x2 - panned_area.x1; + rep.height = panned_area.y2 - panned_area.y1; + } + else + { + RRCrtcGetScanoutSize (crtc, &width, &height); + rep.x = crtc->x; + rep.y = crtc->y; + rep.width = width; + rep.height = height; + } rep.mode = mode ? mode->mode.id : 0; rep.rotation = crtc->rotation; rep.rotations = crtc->rotations; |