diff --git a/libretro-common/include/rthreads/rsemaphore.h b/libretro-common/include/rthreads/rsemaphore.h index dacd4b47e8..6c0f1a392d 100644 --- a/libretro-common/include/rthreads/rsemaphore.h +++ b/libretro-common/include/rthreads/rsemaphore.h @@ -41,6 +41,8 @@ ssem_t *ssem_new(int value); void ssem_free(ssem_t *semaphore); +int ssem_get(ssem_t *semaphore); + void ssem_wait(ssem_t *semaphore); void ssem_signal(ssem_t *semaphore); diff --git a/libretro-common/rthreads/rsemaphore.c b/libretro-common/rthreads/rsemaphore.c index f3d67f4ef3..1e7cc852bd 100644 --- a/libretro-common/rthreads/rsemaphore.c +++ b/libretro-common/rthreads/rsemaphore.c @@ -77,6 +77,21 @@ void ssem_free(ssem_t *semaphore) free((void*)semaphore); } +int ssem_get(ssem_t *semaphore) +{ + int val = 0; + if (!semaphore) + return 0; + + slock_lock(semaphore->mutex); + + val = semaphore->value; + + slock_unlock(semaphore->mutex); + + return val; +} + void ssem_wait(ssem_t *semaphore) { if (!semaphore)