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