egl: Use _eglAddAtExitCall to free thread infos and displays.
authorChia-I Wu <olvaffe@gmail.com>
Mon, 10 Aug 2009 08:45:12 +0000 (16:45 +0800)
committerBrian Paul <brianp@vmware.com>
Wed, 12 Aug 2009 04:14:35 +0000 (22:14 -0600)
Thread infos and displays are usually not freed by applications.  This
commit add atexit calls to free them.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
src/egl/main/eglcurrent.c
src/egl/main/egldisplay.c

index f92719cfbc6478f5874c67e74221960f96f6653d..4431f964f69bce0e851b3bbb7d99d0a5ac261f3e 100644 (file)
@@ -4,6 +4,7 @@
 #include "eglcontext.h"
 #include "egllog.h"
 #include "eglmutex.h"
+#include "eglglobals.h"
 
 
 /* This should be kept in sync with _eglInitThreadInfo() */
@@ -84,7 +85,7 @@ static INLINE EGLBoolean _eglInitTSD(void (*dtor)(_EGLThreadInfo *))
             return EGL_FALSE;
          }
          _egl_FreeTSD = dtor;
-         (void) _eglFiniTSD;
+         _eglAddAtExitCall(_eglFiniTSD);
          _egl_TSDInitialized = EGL_TRUE;
       }
 
@@ -118,7 +119,7 @@ static INLINE EGLBoolean _eglInitTSD(void (*dtor)(_EGLThreadInfo *))
 {
    if (!_egl_FreeTSD && dtor) {
       _egl_FreeTSD = dtor;
-      (void) _eglFiniTSD;
+      _eglAddAtExitCall(_eglFiniTSD);
    }
    return EGL_TRUE;
 }
index 6fdb3b7a1c40e7dcf679d16fc18a535d41244700..feae1d6040942472970af6b00993d0dae6870d61 100644 (file)
@@ -67,7 +67,7 @@ _eglInitDisplay(void)
          _eglDisplayHash = _eglNewHashTable();
          _eglSurfaceHash = _eglNewHashTable();
 
-         (void) _eglFiniDisplay;
+         _eglAddAtExitCall(_eglFiniDisplay);
       }
 
       _eglUnlockMutex(&_eglDisplayInitMutex);