egl_softpipe: Do not flush unlinked context.
An unlinked context is destroyed after _eglMakeCurrent. Flushing such context would cause segfault. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
This commit is contained in:
parent
408db29792
commit
1f871a4d15
|
@ -424,14 +424,19 @@ xlib_eglMakeCurrent(_EGLDriver *drv, _EGLDisplay *dpy,
|
|||
struct xlib_egl_context *context = lookup_context(ctx);
|
||||
struct xlib_egl_surface *draw_surf = lookup_surface(draw);
|
||||
struct xlib_egl_surface *read_surf = lookup_surface(read);
|
||||
struct st_context *oldctx = st_get_current();
|
||||
struct st_context *oldcontext = NULL;
|
||||
_EGLContext *oldctx;
|
||||
|
||||
oldctx = _eglGetCurrentContext();
|
||||
if (oldctx && _eglIsContextLinked(oldctx))
|
||||
oldcontext = st_get_current();
|
||||
|
||||
if (!_eglMakeCurrent(drv, dpy, draw, read, ctx))
|
||||
return EGL_FALSE;
|
||||
|
||||
/* Flush before switching context. Check client API? */
|
||||
if (oldctx)
|
||||
st_flush(oldctx, PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, NULL);
|
||||
if (oldcontext)
|
||||
st_flush(oldcontext, PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, NULL);
|
||||
st_make_current((context ? context->Context : NULL),
|
||||
(draw_surf ? draw_surf->Framebuffer : NULL),
|
||||
(read_surf ? read_surf->Framebuffer : NULL));
|
||||
|
|
Loading…
Reference in New Issue