[client] opengl: switch to SDL_mutex locking

This commit is contained in:
Geoffrey McRae 2017-12-21 01:23:25 +11:00
parent c098967293
commit 58ed978767
2 changed files with 17 additions and 4 deletions

View File

@ -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);
}

View File

@ -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)
#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