mirror of https://github.com/mgba-emu/mgba.git
GBA Video: Clean up thread proxy a bit
This commit is contained in:
parent
e1ffc68582
commit
5bed376e5c
|
@ -69,7 +69,7 @@ void GBAVideoThreadProxyRendererInit(struct GBAVideoRenderer* renderer) {
|
||||||
ConditionInit(&proxyRenderer->fromThreadCond);
|
ConditionInit(&proxyRenderer->fromThreadCond);
|
||||||
ConditionInit(&proxyRenderer->toThreadCond);
|
ConditionInit(&proxyRenderer->toThreadCond);
|
||||||
MutexInit(&proxyRenderer->mutex);
|
MutexInit(&proxyRenderer->mutex);
|
||||||
RingFIFOInit(&proxyRenderer->dirtyQueue, 0x200000, 0x1000);
|
RingFIFOInit(&proxyRenderer->dirtyQueue, 0x40000, 0x1000);
|
||||||
proxyRenderer->threadState = PROXY_THREAD_STOPPED;
|
proxyRenderer->threadState = PROXY_THREAD_STOPPED;
|
||||||
|
|
||||||
proxyRenderer->vramProxy = anonymousMemoryMap(SIZE_VRAM);
|
proxyRenderer->vramProxy = anonymousMemoryMap(SIZE_VRAM);
|
||||||
|
@ -299,16 +299,23 @@ static THREAD_ENTRY _proxyThread(void* renderer) {
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// FIFO was corrupted
|
// FIFO was corrupted
|
||||||
abort();
|
proxyRenderer->threadState = PROXY_THREAD_STOPPED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MutexLock(&proxyRenderer->mutex);
|
MutexLock(&proxyRenderer->mutex);
|
||||||
proxyRenderer->threadState = PROXY_THREAD_IDLE;
|
|
||||||
ConditionWake(&proxyRenderer->fromThreadCond);
|
ConditionWake(&proxyRenderer->fromThreadCond);
|
||||||
|
if (proxyRenderer->threadState != PROXY_THREAD_STOPPED) {
|
||||||
|
proxyRenderer->threadState = PROXY_THREAD_IDLE;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
MutexUnlock(&proxyRenderer->mutex);
|
MutexUnlock(&proxyRenderer->mutex);
|
||||||
|
|
||||||
|
#ifdef _3DS
|
||||||
|
svcExitThread();
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue