diff options
author | Aaron Plattner <aplattner@nvidia.com> | 2007-07-31 16:33:37 -0700 |
---|---|---|
committer | Aaron Plattner <aplattner@nvidia.com> | 2007-07-31 16:33:37 -0700 |
commit | aec0d06469a2fa7440fdd5ee03dc256a68704e77 (patch) | |
tree | efaf1ce99d9e17cfb0ad976bf39c4be99633ecd5 /randr/rrscreen.c | |
parent | a93033b0bc14ed0bb95c680ded26b63cfe5fd1d3 (diff) |
Fix a crash when rotating the screen.
Remember output->crtc before setting a NULL mode because RRCrtcNotify now sets
output->crtc to NULL. Use the saved crtc to set the new mode.
Diffstat (limited to 'randr/rrscreen.c')
-rw-r--r-- | randr/rrscreen.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/randr/rrscreen.c b/randr/rrscreen.c index d92a0ffee..8798b4244 100644 --- a/randr/rrscreen.c +++ b/randr/rrscreen.c @@ -738,6 +738,7 @@ ProcRRSetScreenConfig (ClientPtr client) int rate; Bool has_rate; RROutputPtr output; + RRCrtcPtr crtc; RRModePtr mode; RR10DataPtr pData = NULL; RRScreenSizePtr pSize; @@ -783,7 +784,9 @@ ProcRRSetScreenConfig (ClientPtr client) rep.status = RRSetConfigFailed; goto sendReply; } - + + crtc = output->crtc; + /* * 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 @@ -831,7 +834,7 @@ ProcRRSetScreenConfig (ClientPtr client) return BadValue; } - if ((~output->crtc->rotations) & rotation) + if ((~crtc->rotations) & rotation) { /* * requested rotation or reflection not supported by screen @@ -914,7 +917,7 @@ ProcRRSetScreenConfig (ClientPtr client) } } - if (!RRCrtcSet (output->crtc, mode, 0, 0, stuff->rotation, 1, &output)) + if (!RRCrtcSet (crtc, mode, 0, 0, stuff->rotation, 1, &output)) rep.status = RRSetConfigFailed; else rep.status = RRSetConfigSuccess; |