diff --git a/src/gallium/frontends/wgl/stw_context.c b/src/gallium/frontends/wgl/stw_context.c index 91861cd42e9..8f7150eb6df 100644 --- a/src/gallium/frontends/wgl/stw_context.c +++ b/src/gallium/frontends/wgl/stw_context.c @@ -446,11 +446,21 @@ stw_make_current(HDC hDrawDC, HDC hReadDC, DHGLRC dhglrc) } } else { if (old_ctx->shared) { - stw_st_flush(old_ctx->st, old_ctx->current_framebuffer->stfb, - ST_FLUSH_FRONT | ST_FLUSH_WAIT); + if (old_ctx->current_framebuffer) { + stw_st_flush(old_ctx->st, old_ctx->current_framebuffer->stfb, + ST_FLUSH_FRONT | ST_FLUSH_WAIT); + } else { + struct pipe_fence_handle *fence = NULL; + old_ctx->st->flush(old_ctx->st, + ST_FLUSH_FRONT | ST_FLUSH_WAIT, &fence, + NULL, NULL); + } } else { - stw_st_flush(old_ctx->st, old_ctx->current_framebuffer->stfb, - ST_FLUSH_FRONT); + if (old_ctx->current_framebuffer) + stw_st_flush(old_ctx->st, old_ctx->current_framebuffer->stfb, + ST_FLUSH_FRONT); + else + old_ctx->st->flush(old_ctx->st, ST_FLUSH_FRONT, NULL, NULL, NULL); } } }