all repos — mgba @ 6d5e53f2d8e21e5c120863ac55139a42d55a1f75

mGBA Game Boy Advance Emulator

GB, GBA Video: Don't call finishFrame twice in thread proxy
Vicki Pfau vi@endrift.com
Sat, 22 Sep 2018 10:36:02 -0700
commit

6d5e53f2d8e21e5c120863ac55139a42d55a1f75

parent

555122e0a1bc1311040e6ff7a8b2d95090fa76ca

3 files changed, 8 insertions(+), 3 deletions(-)

jump to
M CHANGESCHANGES

@@ -60,6 +60,7 @@ - GB Serialize: Fix IRQ pending/EI pending confusion

- 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)
M src/gb/extra/proxy.csrc/gb/extra/proxy.c

@@ -254,7 +254,9 @@ if (proxyRenderer->logger->block && proxyRenderer->logger->wait) {

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) {
M src/gba/extra/proxy.csrc/gba/extra/proxy.c

@@ -137,7 +137,7 @@ proxyRenderer->backend->writePalette(proxyRenderer->backend, item->address, item->value);

} 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 @@ if (proxyRenderer->logger->block && proxyRenderer->logger->wait) {

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) {