From ad2c401505b1a4e7d183201c53b0de23ab893410 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Thu, 11 Dec 2014 04:32:51 -0800 Subject: [PATCH] GBA Thread: Properly stop thread when video wait is enabled --- src/gba/gba-thread.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/gba/gba-thread.c b/src/gba/gba-thread.c index e7fc482d5..54efaa3b3 100644 --- a/src/gba/gba-thread.c +++ b/src/gba/gba-thread.c @@ -363,6 +363,12 @@ void GBAThreadEnd(struct GBAThread* threadContext) { threadContext->sync.audioWait = 0; ConditionWake(&threadContext->sync.audioRequiredCond); MutexUnlock(&threadContext->sync.audioBufferMutex); + + MutexLock(&threadContext->sync.videoFrameMutex); + threadContext->sync.videoFrameWait = false; + threadContext->sync.videoFrameOn = false; + ConditionWake(&threadContext->sync.videoFrameRequiredCond); + MutexUnlock(&threadContext->sync.videoFrameMutex); } void GBAThreadReset(struct GBAThread* threadContext) { @@ -374,11 +380,6 @@ void GBAThreadReset(struct GBAThread* threadContext) { } void GBAThreadJoin(struct GBAThread* threadContext) { - MutexLock(&threadContext->sync.videoFrameMutex); - threadContext->sync.videoFrameWait = 0; - ConditionWake(&threadContext->sync.videoFrameRequiredCond); - MutexUnlock(&threadContext->sync.videoFrameMutex); - ThreadJoin(threadContext->thread); MutexDeinit(&threadContext->stateMutex);