if (!p_atomic_dec_zero(&dri2_dpy->ref_count))
return;
+ _eglCleanupDisplay(disp);
dri2_display_destroy(disp);
}
static EGLBoolean
dri2_terminate(_EGLDisplay *disp)
{
+ /* Release all non-current Context/Surfaces. */
+ _eglReleaseDisplayResources(disp);
+
dri2_display_release(disp);
return EGL_TRUE;
if (!p_atomic_dec_zero(&wgl_dpy->ref_count))
return;
+ _eglCleanupDisplay(disp);
wgl_display_destroy(disp);
}
static EGLBoolean
wgl_terminate(_EGLDisplay *disp)
{
+ /* Release all non-current Context/Surfaces. */
+ _eglReleaseDisplayResources(disp);
+
wgl_display_release(disp);
return EGL_TRUE;
RETURN_EGL_ERROR(NULL, EGL_BAD_DISPLAY, EGL_FALSE);
if (disp->Initialized) {
- _eglReleaseDisplayResources(disp);
disp->Driver->Terminate(disp);
- _eglCleanupDisplay(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;
}
simple_mtx_unlock(&disp->Mutex);
disp->Configs = NULL;
}
- /* 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;
+ /* XXX incomplete */
}