randr: Don't change panning parameters if verification fails.
This commit is contained in:
parent
18a8bac1a1
commit
219c26ce0c
|
@ -1327,20 +1327,35 @@ xf86RandR13SetPanning (ScreenPtr pScreen,
|
||||||
{
|
{
|
||||||
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
|
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
|
||||||
xf86CrtcPtr crtc = randr_crtc->devPrivate;
|
xf86CrtcPtr crtc = randr_crtc->devPrivate;
|
||||||
int ret;
|
BoxRec oldTotalArea;
|
||||||
|
BoxRec oldTrackingArea;
|
||||||
|
INT16 oldBorder[4];
|
||||||
|
|
||||||
|
|
||||||
if (crtc->version < 2)
|
if (crtc->version < 2)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
memcpy (&oldTotalArea, &crtc->panningTotalArea, sizeof(BoxRec));
|
||||||
|
memcpy (&oldTrackingArea, &crtc->panningTrackingArea, sizeof(BoxRec));
|
||||||
|
memcpy (oldBorder, crtc->panningBorder, 4*sizeof(INT16));
|
||||||
|
|
||||||
if (totalArea)
|
if (totalArea)
|
||||||
memcpy (&crtc->panningTotalArea, totalArea, sizeof(BoxRec));
|
memcpy (&crtc->panningTotalArea, totalArea, sizeof(BoxRec));
|
||||||
if (trackingArea)
|
if (trackingArea)
|
||||||
memcpy (&crtc->panningTrackingArea, trackingArea, sizeof(BoxRec));
|
memcpy (&crtc->panningTrackingArea, trackingArea, sizeof(BoxRec));
|
||||||
if (border)
|
if (border)
|
||||||
memcpy (crtc->panningBorder, border, 4*sizeof(INT16));
|
memcpy (crtc->panningBorder, border, 4*sizeof(INT16));
|
||||||
ret = xf86RandR13VerifyPanningArea (crtc, pScreen->width, pScreen->height);
|
|
||||||
xf86RandR13Pan (crtc, randrp->pointerX, randrp->pointerY);
|
|
||||||
|
|
||||||
return ret;
|
if (xf86RandR13VerifyPanningArea (crtc, pScreen->width, pScreen->height)) {
|
||||||
|
xf86RandR13Pan (crtc, randrp->pointerX, randrp->pointerY);
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
/* Restore old settings */
|
||||||
|
memcpy (&crtc->panningTotalArea, &oldTotalArea, sizeof(BoxRec));
|
||||||
|
memcpy (&crtc->panningTrackingArea, &oldTrackingArea, sizeof(BoxRec));
|
||||||
|
memcpy (crtc->panningBorder, oldBorder, 4*sizeof(INT16));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static Bool
|
static Bool
|
||||||
|
|
Loading…
Reference in New Issue