From 454fdccffcf7d47ad418343e97ae77db8dfdc885 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 20 Aug 2017 00:24:51 -0700 Subject: [PATCH] Fix possible lost wakeups by acquring event mutex in signal path --- src/Platform.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Platform.c b/src/Platform.c index 980751f..1cdaa1b 100644 --- a/src/Platform.c +++ b/src/Platform.c @@ -242,10 +242,14 @@ void PltSetEvent(PLT_EVENT* event) { #if defined(LC_WINDOWS) SetEvent(*event); #elif defined(__vita__) + sceKernelLockMutex(event->mutex, 1, NULL); event->signalled = 1; + sceKernelUnlockMutex(event->mutex, 1); sceKernelSignalCondAll(event->cond); #else + pthread_mutex_lock(&event->mutex); event->signalled = 1; + pthread_mutex_unlock(&event->mutex); pthread_cond_broadcast(&event->cond); #endif }