3 #include "eglglobals.h"
4 #include "egldisplay.h"
9 #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
12 static _EGL_DECLARE_MUTEX(_eglGlobalMutex
);
13 struct _egl_global _eglGlobal
=
15 &_eglGlobalMutex
, /* Mutex */
16 NULL
, /* DisplayList */
17 1, /* FreeScreenHandle */
19 { NULL
}, /* Drivers */
20 2, /* NumAtExitCalls */
22 /* default AtExitCalls, called in reverse order */
23 _eglUnloadDrivers
, /* always called last */
33 for (i
= _eglGlobal
.NumAtExitCalls
- 1; i
>= 0; i
--)
34 _eglGlobal
.AtExitCalls
[i
]();
39 _eglAddAtExitCall(void (*func
)(void))
42 static EGLBoolean registered
= EGL_FALSE
;
44 _eglLockMutex(_eglGlobal
.Mutex
);
48 registered
= EGL_TRUE
;
51 assert(_eglGlobal
.NumAtExitCalls
< ARRAY_SIZE(_eglGlobal
.AtExitCalls
));
52 _eglGlobal
.AtExitCalls
[_eglGlobal
.NumAtExitCalls
++] = func
;
54 _eglUnlockMutex(_eglGlobal
.Mutex
);