GBA Thread: Properly stop thread when video wait is enabled

This commit is contained in:
Jeffrey Pfau 2014-12-11 04:32:51 -08:00
parent 3fdf8fe316
commit 52f8f51133
1 changed files with 6 additions and 5 deletions

View File

@ -360,6 +360,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) {
@ -371,11 +377,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);