Mesa (master): egl: Implement _eglFiniDisplay.

Brian Paul brianp at kemper.freedesktop.org
Wed Aug 12 04:15:22 UTC 2009


Module: Mesa
Branch: master
Commit: 413969a92052c019bcf3c5bf48cf564613eba598
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=413969a92052c019bcf3c5bf48cf564613eba598

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Mon Aug 10 15:13:42 2009 +0800

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 <olvaffe at gmail.com>

---

 src/egl/main/egldisplay.c |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c
index 58d9352..6fdb3b7 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);




More information about the mesa-commit mailing list