From 04826cd9fc83365e99db3a491254a8d5a6eaac63 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 20 Sep 2022 14:55:37 -0400 Subject: [PATCH] egl: Factor some common terminate cleanup up to common code MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit It's a little difficult to see from the diff, but this is effectively the same calling sequence as before, and more importantly it means the backend only cleans up backend state rather than needing to call up to the core. Reviewed-by: Marek Olšák Part-of: --- src/egl/drivers/dri2/egl_dri2.c | 4 ---- src/egl/drivers/wgl/egl_wgl.c | 4 ---- src/egl/main/eglapi.c | 9 ++------- src/egl/main/egldisplay.c | 8 +++++++- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 13d9575..356548e 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 9165ae5..f069b45 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 f9d32b9..57df75c 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 39850e3..52a9102 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; } -- 2.7.4