1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-02 09:03:37 +00:00

Correct VI_UpdateScreen(): avoid multiple calls of VI_UpdateSize().

This commit is contained in:
Sergey Lipskiy 2014-12-24 16:10:02 +06:00
parent 949508d652
commit 97c43d07c7

16
VI.cpp
View File

@ -91,8 +91,10 @@ void VI_UpdateScreen()
return;
ogl.saveScreenshot();
bool bVIUpdated = false;
if (*REG.VI_ORIGIN != VI.lastOrigin) {
VI_UpdateSize();
bVIUpdated = true;
ogl.updateScale();
}
@ -104,16 +106,22 @@ void VI_UpdateScreen()
if ((gSP.changed&CHANGED_CPU_FB_WRITE) == CHANGED_CPU_FB_WRITE) {
FrameBuffer * pBuffer = frameBufferList().findBuffer(*REG.VI_ORIGIN);
if (pBuffer == NULL || pBuffer->m_width != VI.width) {
VI_UpdateSize();
ogl.updateScale();
if (!bVIUpdated) {
VI_UpdateSize();
ogl.updateScale();
bVIUpdated = true;
}
const u32 size = *REG.VI_STATUS & 3;
if (VI.height > 0 && size > G_IM_SIZ_8b && VI.width > 0)
frameBufferList().saveBuffer(*REG.VI_ORIGIN, G_IM_FMT_RGBA, size, VI.width, VI.height, true);
}
}
if ((((*REG.VI_STATUS)&3) > 0) && (config.frameBufferEmulation.copyFromRDRAM || bCFB)) {
VI_UpdateSize();
FrameBuffer_CopyFromRDRAM( *REG.VI_ORIGIN, config.frameBufferEmulation.copyFromRDRAM && !bCFB );
if (!bVIUpdated) {
VI_UpdateSize();
bVIUpdated = true;
}
FrameBuffer_CopyFromRDRAM(*REG.VI_ORIGIN, config.frameBufferEmulation.copyFromRDRAM && !bCFB);
}
frameBufferList().renderBuffer(*REG.VI_ORIGIN);