From 58ed9787674df1af0c1e571297b6bb77f78a045b Mon Sep 17 00:00:00 2001 From: Geoffrey McRae Date: Thu, 21 Dec 2017 01:23:25 +1100 Subject: [PATCH] [client] opengl: switch to SDL_mutex locking --- client/renderers/opengl.c | 4 ++++ client/utils.h | 17 +++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/client/renderers/opengl.c b/client/renderers/opengl.c index 8f76d920..1b91200c 100644 --- a/client/renderers/opengl.c +++ b/client/renderers/opengl.c @@ -185,6 +185,10 @@ void opengl_deinitialize(void * opaque) if (this->mouseData) free(this->mouseData); + LG_LOCK_FREE(this->formatLock); + LG_LOCK_FREE(this->syncLock ); + LG_LOCK_FREE(this->mouseLock ); + free(this); } diff --git a/client/utils.h b/client/utils.h index b2a76e82..c446c427 100644 --- a/client/utils.h +++ b/client/utils.h @@ -46,7 +46,16 @@ static inline void nsleep(uint64_t ns) nanosleep(&ts, NULL); } -typedef volatile int LG_Lock; -#define LG_LOCK_INIT(x) (x) = 0 -#define LG_LOCK(x) while(__sync_lock_test_and_set(&(x), 1)) {nsleep(100);} -#define LG_UNLOCK(x) __sync_lock_release(&x) \ No newline at end of file +#ifdef ATOMIC_LOCKING + typedef volatile int LG_Lock; + #define LG_LOCK_INIT(x) (x) = 0 + #define LG_LOCK(x) while(__sync_lock_test_and_set(&(x), 1)) {nsleep(100);} + #define LG_UNLOCK(x) __sync_lock_release(&x) + #define LG_LOCK_FREE(x) +#else + typedef SDL_mutex * LG_Lock; + #define LG_LOCK_INIT(x) (x = SDL_CreateMutex()) + #define LG_LOCK(x) SDL_LockMutex(x) + #define LG_UNLOCK(x) SDL_UnlockMutex(x) + #define LG_LOCK_FREE(x) SDL_DestroyMutex(x) +#endif \ No newline at end of file