diff options
author | Chia-I Wu <olvaffe@gmail.com> | 2009-08-10 11:35:06 +0800 |
---|---|---|
committer | Brian Paul <brianp@vmware.com> | 2009-08-11 22:14:35 -0600 |
commit | e79d21ca1f11e5b584db0930eb0cf49869b0e77d (patch) | |
tree | 334534d2b175c1c74584696820bc24a048370877 /src/egl | |
parent | 50f8ca23449af62955dc37695adea2e65696a87b (diff) | |
download | external_mesa3d-e79d21ca1f11e5b584db0930eb0cf49869b0e77d.zip external_mesa3d-e79d21ca1f11e5b584db0930eb0cf49869b0e77d.tar.gz external_mesa3d-e79d21ca1f11e5b584db0930eb0cf49869b0e77d.tar.bz2 |
egl: Add eglmutex.h.
The implementation uses pthread mutex when available. Otherwise, it is
no-op.
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Diffstat (limited to 'src/egl')
-rw-r--r-- | src/egl/main/Makefile | 1 | ||||
-rw-r--r-- | src/egl/main/eglmutex.h | 52 |
2 files changed, 53 insertions, 0 deletions
diff --git a/src/egl/main/Makefile b/src/egl/main/Makefile index 1d64d94..ab61d68 100644 --- a/src/egl/main/Makefile +++ b/src/egl/main/Makefile @@ -20,6 +20,7 @@ HEADERS = \ eglhash.h \ eglmisc.h \ eglmode.h \ + eglmutex.h \ eglscreen.h \ eglstring.h \ eglsurface.h \ diff --git a/src/egl/main/eglmutex.h b/src/egl/main/eglmutex.h new file mode 100644 index 0000000..29faba0 --- /dev/null +++ b/src/egl/main/eglmutex.h @@ -0,0 +1,52 @@ +#ifndef EGLMUTEX_INCLUDED +#define EGLMUTEX_INCLUDED + +#include "eglcompiler.h" + +#ifdef PTHREADS +#include <pthread.h> + +typedef pthread_mutex_t _EGLMutex; + +static INLINE void _eglInitMutex(_EGLMutex *m) +{ + pthread_mutex_init(m, NULL); +} + +static INLINE void +_eglDestroyMutex(_EGLMutex *m) +{ + pthread_mutex_destroy(m); +} + +static INLINE void +_eglLockMutex(_EGLMutex *m) +{ + pthread_mutex_lock(m); +} + +static INLINE void +_eglUnlockMutex(_EGLMutex *m) +{ + pthread_mutex_unlock(m); +} + +#define _EGL_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER +#define _EGL_DECLARE_MUTEX(m) \ + _EGLMutex m = _EGL_MUTEX_INITIALIZER + +#else + +typedef int _EGLMutex; +static INLINE void _eglInitMutex(_EGLMutex *m) { (void) m; } +static INLINE void _eglDestroyMutex(_EGLMutex *m) { (void) m; } +static INLINE void _eglLockMutex(_EGLMutex *m) { (void) m; } +static INLINE void _eglUnlockMutex(_EGLMutex *m) { (void) m; } + +#define _EGL_MUTEX_INITIALIZER 0 +#define _EGL_DECLARE_MUTEX(m) \ + _EGLMutex m = _EGL_MUTEX_INITIALIZER + +#endif + +#endif /* EGLMUTEX_INCLUDED */ |