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