#include "eglhash.h"
+/**
+ * Per-thread info
+ */
+struct _egl_thread_info
+{
+ EGLint LastError;
+ _EGLContext *CurrentContext;
+ EGLenum CurrentAPI;
+};
+
+
+/**
+ * Global library data
+ */
struct _egl_global
{
EGLBoolean Initialized;
_EGLHashtable *Displays;
- _EGLHashtable *Contexts;
_EGLHashtable *Surfaces;
EGLScreenMESA FreeScreenHandle;
- EGLint LastError;
+ /* bitmaks of supported APIs (supported by _some_ driver) */
+ EGLint ClientAPIsMask;
- /* XXX this should be per-thread someday */
- _EGLContext *CurrentContext;
+ char ClientAPIs[1000]; /**< updated by eglQueryString */
+
+ /* XXX temporary - should be thread-specific data (TSD) */
+ _EGLThreadInfo *ThreadInfo;
+
+ EGLint NumDrivers;
+ _EGLDriver *Drivers[10];
};
_eglDestroyGlobals(void);
+extern _EGLThreadInfo *
+_eglNewThreadInfo(void);
+
+
extern void
-_eglError(EGLint errCode, const char *msg);
+_eglDeleteThreadData(_EGLThreadInfo *t);
-extern EGLScreenMESA
-_eglAllocScreenHandle(void);
+extern _EGLThreadInfo *
+_eglGetCurrentThread(void);
+
+
+extern void
+_eglError(EGLint errCode, const char *msg);
#endif /* EGLGLOBALS_INCLUDED */