From: Timothy Arceri Date: Fri, 17 Mar 2017 00:02:14 +0000 (+1100) Subject: st/dri: wait for thread to finish before unbinding context X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9e42b93f338d73d5bb97279060cedef70622c1d0;p=mesa.git st/dri: wait for thread to finish before unbinding context Fixes a bunch of piglit crashes that hit an assert() when trying to delete the framebuffer. The assert() was triggered because WinSysDrawBuffer was set to NULL before glDeleteFramebuffers() was called. Tested-by: Michel Dänzer Reviewed-by: Marek Olšák --- diff --git a/src/gallium/state_trackers/dri/dri_context.c b/src/gallium/state_trackers/dri/dri_context.c index 91d2d1fbbe8..92d79849c4a 100644 --- a/src/gallium/state_trackers/dri/dri_context.c +++ b/src/gallium/state_trackers/dri/dri_context.c @@ -206,6 +206,9 @@ dri_unbind_context(__DRIcontext * cPriv) if (--ctx->bind_count == 0) { if (ctx->st == ctx->stapi->get_current(ctx->stapi)) { + if (ctx->st->thread_finish) + ctx->st->thread_finish(ctx->st); + /* For conformance, unbind is supposed to flush the context. * However, if we do it here we might end up flushing a partially * destroyed context. Instead, we flush in dri_make_current and