summaryrefslogtreecommitdiff
path: root/randr
diff options
context:
space:
mode:
authorAaron Plattner <aplattner@nvidia.com>2007-07-31 16:33:37 -0700
committerAaron Plattner <aplattner@nvidia.com>2007-07-31 16:33:37 -0700
commitaec0d06469a2fa7440fdd5ee03dc256a68704e77 (patch)
treeefaf1ce99d9e17cfb0ad976bf39c4be99633ecd5 /randr
parenta93033b0bc14ed0bb95c680ded26b63cfe5fd1d3 (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')
-rw-r--r--randr/rrscreen.c9
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;