fix possible crash

This commit is contained in:
Arisotura 2019-05-25 19:52:56 +02:00
parent 956c2c5d86
commit 9ed1dda9ca
2 changed files with 18 additions and 21 deletions

View File

@ -150,7 +150,7 @@ void Reset()
VRAMMap_ARM7[0] = 0; VRAMMap_ARM7[0] = 0;
VRAMMap_ARM7[1] = 0; VRAMMap_ARM7[1] = 0;
printf("RESET: ACCEL=%d FRAMEBUFFER=%p\n", Accelerated, Framebuffer[0][0]);
int fbsize; int fbsize;
if (Accelerated) fbsize = (256*3 + 1) * 192; if (Accelerated) fbsize = (256*3 + 1) * 192;
else fbsize = 256 * 192; else fbsize = 256 * 192;
@ -254,27 +254,24 @@ void AssignFramebuffers()
void SetDisplaySettings(bool accel) void SetDisplaySettings(bool accel)
{ {
if (accel != Accelerated) int fbsize;
{ if (accel) fbsize = (256*3 + 1) * 192;
int fbsize; else fbsize = 256 * 192;
if (accel) fbsize = (256*3 + 1) * 192; if (Framebuffer[0][0]) delete[] Framebuffer[0][0];
else fbsize = 256 * 192; if (Framebuffer[1][0]) delete[] Framebuffer[1][0];
if (Framebuffer[0][0]) delete[] Framebuffer[0][0]; if (Framebuffer[0][1]) delete[] Framebuffer[0][1];
if (Framebuffer[1][0]) delete[] Framebuffer[1][0]; if (Framebuffer[1][1]) delete[] Framebuffer[1][1];
if (Framebuffer[0][1]) delete[] Framebuffer[0][1]; Framebuffer[0][0] = new u32[fbsize];
if (Framebuffer[1][1]) delete[] Framebuffer[1][1]; Framebuffer[1][0] = new u32[fbsize];
Framebuffer[0][0] = new u32[fbsize]; Framebuffer[0][1] = new u32[fbsize];
Framebuffer[1][0] = new u32[fbsize]; Framebuffer[1][1] = new u32[fbsize];
Framebuffer[0][1] = new u32[fbsize];
Framebuffer[1][1] = new u32[fbsize];
memset(Framebuffer[0][0], 0, fbsize*4); memset(Framebuffer[0][0], 0, fbsize*4);
memset(Framebuffer[1][0], 0, fbsize*4); memset(Framebuffer[1][0], 0, fbsize*4);
memset(Framebuffer[0][1], 0, fbsize*4); memset(Framebuffer[0][1], 0, fbsize*4);
memset(Framebuffer[1][1], 0, fbsize*4); memset(Framebuffer[1][1], 0, fbsize*4);
AssignFramebuffers(); AssignFramebuffers();
}
GPU2D_A->SetDisplaySettings(accel); GPU2D_A->SetDisplaySettings(accel);
GPU2D_B->SetDisplaySettings(accel); GPU2D_B->SetDisplaySettings(accel);

View File

@ -384,7 +384,7 @@ void GLScreen_DrawScreen()
OpenGL_UseShaderProgram(GL_ScreenShaderAccel); OpenGL_UseShaderProgram(GL_ScreenShaderAccel);
glBindFramebuffer(GL_FRAMEBUFFER, 0); glBindFramebuffer(GL_FRAMEBUFFER, 0);
glClearColor(0, 1, 0, 1); glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT); glClear(GL_COLOR_BUFFER_BIT);
int frontbuf = GPU::FrontBuffer; int frontbuf = GPU::FrontBuffer;