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