st/dri: wait for thread to finish before unbinding context
authorTimothy Arceri <tarceri@itsqueeze.com>
Fri, 17 Mar 2017 00:02:14 +0000 (11:02 +1100)
committerTimothy Arceri <tarceri@itsqueeze.com>
Sat, 18 Mar 2017 03:15:52 +0000 (14:15 +1100)
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 <michel.daenzer@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/state_trackers/dri/dri_context.c

index 91d2d1fbbe87c5bc4a982f7393c205e1a2dea5b9..92d79849c4a6c75db1c449bd75aff778d808b7ef 100644 (file)
@@ -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