X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fnasal%2Fthread-posix.c;h=bfa69a174e8979adcc7686e59daf0e42872b3873;hb=bcb320b537b6f7e5e3724e8a30d309322171eb43;hp=3aa6f9398431e5dfa941b208cd04879b46b50221;hpb=979d3da69c085733d573af7298a3fd95fb4574a3;p=simgear.git diff --git a/simgear/nasal/thread-posix.c b/simgear/nasal/thread-posix.c index 3aa6f939..bfa69a17 100644 --- a/simgear/nasal/thread-posix.c +++ b/simgear/nasal/thread-posix.c @@ -10,6 +10,12 @@ void* naNewLock() return lock; } +void naFreeLock(void* lock) +{ + pthread_mutex_destroy(lock); + naFree(lock); +} + void naLock(void* lock) { pthread_mutex_lock((pthread_mutex_t*)lock); @@ -35,6 +41,14 @@ void* naNewSem() return sem; } +void naFreeSem(void* p) +{ + struct naSem* sem = p; + pthread_mutex_destroy(&sem->lock); + pthread_cond_destroy(&sem->cvar); + naFree(sem); +} + void naSemDown(void* sh) { struct naSem* sem = (struct naSem*)sh; @@ -45,11 +59,11 @@ void naSemDown(void* sh) pthread_mutex_unlock(&sem->lock); } -void naSemUpAll(void* sh, int count) +void naSemUp(void* sh, int count) { struct naSem* sem = (struct naSem*)sh; pthread_mutex_lock(&sem->lock); - sem->count = count; + sem->count += count; pthread_cond_broadcast(&sem->cvar); pthread_mutex_unlock(&sem->lock); }