From 413969a92052c019bcf3c5bf48cf564613eba598 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Mon, 10 Aug 2009 15:13:42 +0800 Subject: egl: Implement _eglFiniDisplay. _eglFiniDisplay is called at exit time to free allocated displays. It is, however, not used right now. Signed-off-by: Chia-I Wu --- src/egl/main/egldisplay.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/egl/main/egldisplay.c') diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index 58d935225c..6fdb3b7a1c 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -13,6 +13,7 @@ #include "eglhash.h" #include "eglstring.h" #include "eglmutex.h" +#include "egllog.h" static _EGL_DECLARE_MUTEX(_eglDisplayInitMutex); @@ -29,7 +30,22 @@ _eglFiniDisplay(void) { _eglLockMutex(&_eglDisplayInitMutex); if (_eglDisplayHash) { - /* XXX TODO walk over table entries, deleting each */ + EGLuint key = _eglHashFirstEntry(_eglDisplayHash); + + while (key) { + _EGLDisplay *dpy = (_EGLDisplay *) + _eglHashLookup(_eglDisplayHash, key); + assert(dpy); + + if (dpy->ContextList || dpy->SurfaceList) + _eglLog(_EGL_DEBUG, "Display %u is destroyed with resources", key); + + _eglCleanupDisplay(dpy); + free(dpy); + + key = _eglHashNextEntry(_eglDisplayHash, key); + } + _eglDeleteHashTable(_eglDisplayHash); _eglDisplayHash = NULL; _eglDeleteHashTable(_eglSurfaceHash); -- cgit v1.2.3