diff options
author | Chia-I Wu <olvaffe@gmail.com> | 2009-08-10 16:45:12 +0800 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2009-08-11 22:14:35 -0600 |
commit | 64e7bb326207df559b5cebdb278f62df83cf1425 (patch) | |
tree | 3a30ae4d91b65757dced4b6f4e599b6a6c9180ed | |
parent | 435c7ac24d8d6f8ddae59f4b66983d7642250d1e (diff) |
egl: Use _eglAddAtExitCall to free thread infos and displays.
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>
-rw-r--r-- | src/egl/main/eglcurrent.c | 5 | ||||
-rw-r--r-- | src/egl/main/egldisplay.c | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/src/egl/main/eglcurrent.c b/src/egl/main/eglcurrent.c index f92719cfbc..4431f964f6 100644 --- a/src/egl/main/eglcurrent.c +++ b/src/egl/main/eglcurrent.c @@ -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; } diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index 6fdb3b7a1c..feae1d6040 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -67,7 +67,7 @@ _eglInitDisplay(void) _eglDisplayHash = _eglNewHashTable(); _eglSurfaceHash = _eglNewHashTable(); - (void) _eglFiniDisplay; + _eglAddAtExitCall(_eglFiniDisplay); } _eglUnlockMutex(&_eglDisplayInitMutex); |