dri2: Unblock Clients on Drawable release
If the Window is destroyed by another client, such as the window manager, the original client may be blocked by DRI2 awaiting a vblank event. When this happens, DRI2DrawableGone forgets to unblock that client and so the wait never completes. Note Present/xshmfence is also suspectible to this race. Testcase: dri2-race/manager Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
This commit is contained in:
		
							parent
							
								
									a722d617a0
								
							
						
					
					
						commit
						e43abdce96
					
				|  | @ -413,6 +413,9 @@ DRI2DrawableGone(void *p, XID id) | ||||||
|         (*pDraw->pScreen->DestroyPixmap)(pPriv->redirectpixmap); |         (*pDraw->pScreen->DestroyPixmap)(pPriv->redirectpixmap); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     if (pPriv->blockedClient) | ||||||
|  |         AttendClient(pPriv->blockedClient); | ||||||
|  | 
 | ||||||
|     free(pPriv); |     free(pPriv); | ||||||
| 
 | 
 | ||||||
|     return Success; |     return Success; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue