diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 13d957580f0..356548e11dc 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -1225,7 +1225,6 @@ dri2_display_release(_EGLDisplay *disp) if (!p_atomic_dec_zero(&dri2_dpy->ref_count)) return; - _eglCleanupDisplay(disp); dri2_display_destroy(disp); } @@ -1327,9 +1326,6 @@ dri2_egl_surface_free_local_buffers(struct dri2_egl_surface *dri2_surf) static EGLBoolean dri2_terminate(_EGLDisplay *disp) { - /* Release all non-current Context/Surfaces. */ - _eglReleaseDisplayResources(disp); - dri2_display_release(disp); return EGL_TRUE; diff --git a/src/egl/drivers/wgl/egl_wgl.c b/src/egl/drivers/wgl/egl_wgl.c index 9165ae5646f..f069b450df7 100644 --- a/src/egl/drivers/wgl/egl_wgl.c +++ b/src/egl/drivers/wgl/egl_wgl.c @@ -357,7 +357,6 @@ wgl_display_release(_EGLDisplay *disp) if (!p_atomic_dec_zero(&wgl_dpy->ref_count)) return; - _eglCleanupDisplay(disp); wgl_display_destroy(disp); } @@ -370,9 +369,6 @@ wgl_display_release(_EGLDisplay *disp) static EGLBoolean wgl_terminate(_EGLDisplay *disp) { - /* Release all non-current Context/Surfaces. */ - _eglReleaseDisplayResources(disp); - wgl_display_release(disp); return EGL_TRUE; diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index f9d32b92dbd..57df75cd725 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -779,14 +779,9 @@ eglTerminate(EGLDisplay dpy) RETURN_EGL_ERROR(NULL, EGL_BAD_DISPLAY, EGL_FALSE); if (disp->Initialized) { + _eglReleaseDisplayResources(disp); disp->Driver->Terminate(disp); - /* do not reset disp->Driver */ - disp->ClientAPIsString[0] = 0; - disp->Initialized = EGL_FALSE; - - /* Reset blob cache funcs on terminate. */ - disp->BlobCacheSet = NULL; - disp->BlobCacheGet = NULL; + _eglCleanupDisplay(disp); } simple_mtx_unlock(&disp->Mutex); diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index 39850e34f7c..52a91027292 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -370,7 +370,13 @@ _eglCleanupDisplay(_EGLDisplay *disp) disp->Configs = NULL; } - /* XXX incomplete */ + /* do not reset disp->Driver */ + disp->ClientAPIsString[0] = 0; + disp->Initialized = EGL_FALSE; + + /* Reset blob cache funcs on terminate. */ + disp->BlobCacheSet = NULL; + disp->BlobCacheGet = NULL; }