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.
This commit is contained in:
Aaron Plattner 2007-07-31 16:33:37 -07:00
parent a93033b0bc
commit aec0d06469

View File

@ -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;