GB, GBA Video: Don't call finishFrame twice in thread proxy

This commit is contained in:
Vicki Pfau 2018-09-22 10:36:02 -07:00
parent 555122e0a1
commit 6d5e53f2d8
3 changed files with 8 additions and 3 deletions

View File

@ -60,6 +60,7 @@ Bugfixes:
- GB MBC: Improve multicart detection heuristic (fixes mgba.io/i/1177)
- GB Audio: Fix channel 3 reset value
- GB Audio: Fix channel 4 initial LFSR
- GB, GBA Video: Don't call finishFrame twice in thread proxy
Misc:
- GBA Timer: Use global cycles for timers
- GBA: Extend oddly-sized ROMs to full address space (fixes mgba.io/i/722)

View File

@ -254,7 +254,9 @@ void GBVideoProxyRendererFinishFrame(struct GBVideoRenderer* renderer) {
proxyRenderer->logger->lock(proxyRenderer->logger);
proxyRenderer->logger->wait(proxyRenderer->logger);
}
proxyRenderer->backend->finishFrame(proxyRenderer->backend);
if (!proxyRenderer->logger->block) {
proxyRenderer->backend->finishFrame(proxyRenderer->backend);
}
mVideoLoggerRendererFinishFrame(proxyRenderer->logger);
mVideoLoggerRendererFlush(proxyRenderer->logger);
if (proxyRenderer->logger->block && proxyRenderer->logger->wait) {

View File

@ -137,7 +137,7 @@ static bool _parsePacket(struct mVideoLogger* logger, const struct mVideoLoggerD
}
break;
case DIRTY_OAM:
if (item->address < SIZE_PALETTE_RAM) {
if (item->address < SIZE_OAM) {
logger->oam[item->address] = item->value;
proxyRenderer->backend->writeOAM(proxyRenderer->backend, item->address);
}
@ -252,7 +252,9 @@ void GBAVideoProxyRendererFinishFrame(struct GBAVideoRenderer* renderer) {
proxyRenderer->logger->lock(proxyRenderer->logger);
proxyRenderer->logger->wait(proxyRenderer->logger);
}
proxyRenderer->backend->finishFrame(proxyRenderer->backend);
if (!proxyRenderer->logger->block) {
proxyRenderer->backend->finishFrame(proxyRenderer->backend);
}
mVideoLoggerRendererFinishFrame(proxyRenderer->logger);
mVideoLoggerRendererFlush(proxyRenderer->logger);
if (proxyRenderer->logger->block && proxyRenderer->logger->wait) {