[Mesa-dev] [PATCH] egl/dri2: dri2_make_current: Release previous context's display
Nicolas Boichat
drinkcat at chromium.org
Wed Aug 10 06:00:35 UTC 2016
eglMakeCurrent can also be used to change the active display. In that
case, we need to decrement ref_count of the previous display (possibly
destroying it), and increment it on the next display.
Also, old_dsurf/old_rsurf cannot be non-NULL if old_ctx is NULL, so
we only need to test if old_ctx is non-NULL.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97214
Fixes: 9ee683f877 (egl/dri2: Add reference count for dri2_egl_display)
Cc: "12.0" <mesa-stable at lists.freedesktop.org>
Reported-by: Alexandr Zelinsky <mexahotabop at w1l.ru>
Tested-by: Alexandr Zelinsky <mexahotabop at w1l.ru>
Signed-off-by: Nicolas Boichat <drinkcat at chromium.org>
---
src/egl/drivers/dri2/egl_dri2.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 3205a36..701e42a 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -1285,8 +1285,10 @@ dri2_make_current(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf,
if (!unbind)
dri2_dpy->ref_count++;
- if (old_dsurf || old_rsurf || old_ctx)
- dri2_display_release(disp);
+ if (old_ctx) {
+ EGLDisplay old_disp = _eglGetDisplayHandle(old_ctx->Resource.Display);
+ dri2_display_release(old_disp);
+ }
return EGL_TRUE;
} else {
--
2.8.0.rc3.226.g39d4020
More information about the mesa-dev
mailing list