From d80b24f3802323d2525ffcf2d50e5bc273a3e219 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 12 Aug 2015 14:59:37 +0200 Subject: [PATCH] (Vita) We can implement mutexes properly for Vita --- libretro-common/rthreads/psp_pthread.h | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/libretro-common/rthreads/psp_pthread.h b/libretro-common/rthreads/psp_pthread.h index fb681c49ea..66e9010e62 100644 --- a/libretro-common/rthreads/psp_pthread.h +++ b/libretro-common/rthreads/psp_pthread.h @@ -24,9 +24,13 @@ #ifndef _PSP_PTHREAD_WRAP__ #define _PSP_PTHREAD_WRAP__ +#ifdef VITA +#include +#else #include #include #include +#endif #include #include @@ -78,24 +82,40 @@ static INLINE int pthread_mutex_init(pthread_mutex_t *mutex, { sprintf(name_buffer, "0x%08X", (uint32_t) mutex); +#ifdef VITA + return *mutex = sceKernelCreateMutex(name_buffer, 0, 0, 0); +#else return *mutex = sceKernelCreateSema(name_buffer, 0, 1, 1, NULL); +#endif } static INLINE int pthread_mutex_destroy(pthread_mutex_t *mutex) { +#ifdef VITA + return sceKernelDeleteMutex(*mutex); +#else return sceKernelDeleteSema(*mutex); +#endif } static INLINE int pthread_mutex_lock(pthread_mutex_t *mutex) { - //FIXME: stub +#ifdef VITA + return sceKernelLockMutex(*mutex, 1, 0); +#else + /* FIXME: stub */ return 1; +#endif } static INLINE int pthread_mutex_unlock(pthread_mutex_t *mutex) { - //FIXME: stub +#ifdef VITA + return sceKernelUnlockMutex(*mutex, 1); +#else + /* FIXME: stub */ return 1; +#endif }