eglTerminate should destroy the contexts and surfaces of the display. Signed-off-by: Chia-I Wu <olva...@gmail.com> --- src/egl/main/egldisplay.c | 21 +++++++++++++++++++++ src/egl/main/egldisplay.h | 4 ++++ src/egl/main/egldriver.c | 4 +--- 3 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index 8c3dfda..6f3d5eb 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -108,6 +108,27 @@ _eglFindDisplay(NativeDisplayType nativeDisplay) } +void +_eglReleaseDisplayResources(_EGLDriver *drv, EGLDisplay dpy) +{ + _EGLDisplay *display = _eglLookupDisplay(dpy); + _EGLContext *contexts = display->ContextList; + _EGLSurface *surfaces = display->SurfaceList; + + while (contexts) { + EGLContext handle = _eglGetContextHandle(contexts); + contexts = contexts->Next; + drv->API.DestroyContext(drv, dpy, handle); + } + + while (surfaces) { + EGLSurface handle = _eglGetSurfaceHandle(surfaces); + surfaces = surfaces->Next; + drv->API.DestroySurface(drv, dpy, handle); + } +} + + /** * Free all the data hanging of an _EGLDisplay object, but not * the object itself. diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h index c5a7f08..d7a2e60 100644 --- a/src/egl/main/egldisplay.h +++ b/src/egl/main/egldisplay.h @@ -56,6 +56,10 @@ _eglFindDisplay(NativeDisplayType nativeDisplay); extern void +_eglReleaseDisplayResources(_EGLDriver *drv, EGLDisplay dpy); + + +extern void _eglCleanupDisplay(_EGLDisplay *disp); diff --git a/src/egl/main/egldriver.c b/src/egl/main/egldriver.c index 43b1f51..f2a864c 100644 --- a/src/egl/main/egldriver.c +++ b/src/egl/main/egldriver.c @@ -284,9 +284,7 @@ _eglCloseDriver(_EGLDriver *drv, EGLDisplay dpy) _eglLog(_EGL_DEBUG, "Closing %s", drv->Name); - /* - * XXX check for currently bound context/surfaces and delete them? - */ + _eglReleaseDisplayResources(drv, dpy); b = drv->API.Terminate(drv, dpy); -- 1.6.2.4 ------------------------------------------------------------------------------ Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge _______________________________________________ Mesa3d-dev mailing list Mesa3d-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mesa3d-dev