Merge branch 'master' of git+ssh://agd5f@git.freedesktop.org/git/mesa/mesa into r6xx...
[mesa.git] / src / egl / main / eglglobals.c
1 #include <stdlib.h>
2 #include "eglglobals.h"
3 #include "egllog.h"
4
5 struct _egl_global _eglGlobal =
6 {
7 EGL_FALSE
8 };
9
10 /**
11 * Init the fields in the _eglGlobal struct
12 * May be safely called more than once.
13 */
14 void
15 _eglInitGlobals(void)
16 {
17 if (!_eglGlobal.Initialized) {
18 _eglGlobal.Displays = _eglNewHashTable();
19 _eglGlobal.Surfaces = _eglNewHashTable();
20 _eglGlobal.FreeScreenHandle = 1;
21 _eglGlobal.Initialized = EGL_TRUE;
22
23 _eglGlobal.ClientAPIsMask = 0x0;
24
25 if (!_eglInitCurrent())
26 _eglLog(_EGL_FATAL, "failed to initialize \"current\" system");
27 }
28 }
29
30
31 /**
32 * Should call this via an atexit handler.
33 */
34 void
35 _eglDestroyGlobals(void)
36 {
37 _eglFiniCurrent();
38 /* XXX TODO walk over table entries, deleting each */
39 _eglDeleteHashTable(_eglGlobal.Displays);
40 _eglDeleteHashTable(_eglGlobal.Surfaces);
41 }