fixes: Fix PanoramiXSetWindowShapeRegion for root windows (v2)
Root windows in Xinerama are in the coordinate space of their root window pixmap, not in protocol space. v2: Only translate for root windows, sice the window shape is drawable-relative. Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
		
							parent
							
								
									5c10c7ea21
								
							
						
					
					
						commit
						808303fe52
					
				|  | @ -857,6 +857,7 @@ PanoramiXFixesSetWindowShapeRegion(ClientPtr client) | |||
| { | ||||
|     int result = Success, j; | ||||
|     PanoramiXRes *win; | ||||
|     RegionPtr reg = NULL; | ||||
| 
 | ||||
|     REQUEST(xXFixesSetWindowShapeRegionReq); | ||||
| 
 | ||||
|  | @ -869,10 +870,22 @@ PanoramiXFixesSetWindowShapeRegion(ClientPtr client) | |||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     if (win->u.win.root) | ||||
|         VERIFY_REGION_OR_NONE(reg, stuff->region, client, DixReadAccess); | ||||
| 
 | ||||
|     FOR_NSCREENS_FORWARD(j) { | ||||
|         ScreenPtr screen = screenInfo.screens[j]; | ||||
|         stuff->dest = win->info[j].id; | ||||
| 
 | ||||
|         if (reg) | ||||
|             RegionTranslate(reg, -screen->x, -screen->y); | ||||
| 
 | ||||
|         result = | ||||
|             (*PanoramiXSaveXFixesVector[X_XFixesSetWindowShapeRegion]) (client); | ||||
| 
 | ||||
|         if (reg) | ||||
|             RegionTranslate(reg, screen->x, screen->y); | ||||
| 
 | ||||
|         if (result != Success) | ||||
|             break; | ||||
|     } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue