summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2017-03-17 11:02:14 +1100
committerTimothy Arceri <[email protected]>2017-03-18 14:15:52 +1100
commit9e42b93f338d73d5bb97279060cedef70622c1d0 (patch)
tree5feea530ad16cdb8af95288101beb03c0cc6d94e
parent40bc1afc9437433f2f1d1c0a6980376ff5670638 (diff)
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 <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r--src/gallium/state_trackers/dri/dri_context.c3
1 files changed, 3 insertions, 0 deletions
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