From 9ed1dda9ca18e571fc6613885ac944bbb938cd9a Mon Sep 17 00:00:00 2001 From: Arisotura Date: Sat, 25 May 2019 19:52:56 +0200 Subject: [PATCH] fix possible crash --- src/GPU.cpp | 37 +++++++++++++++++-------------------- src/libui_sdl/main.cpp | 2 +- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/GPU.cpp b/src/GPU.cpp index fe23a77b..d1870fde 100644 --- a/src/GPU.cpp +++ b/src/GPU.cpp @@ -150,7 +150,7 @@ void Reset() VRAMMap_ARM7[0] = 0; VRAMMap_ARM7[1] = 0; - +printf("RESET: ACCEL=%d FRAMEBUFFER=%p\n", Accelerated, Framebuffer[0][0]); int fbsize; if (Accelerated) fbsize = (256*3 + 1) * 192; else fbsize = 256 * 192; @@ -254,27 +254,24 @@ void AssignFramebuffers() void SetDisplaySettings(bool accel) { - if (accel != Accelerated) - { - int fbsize; - if (accel) fbsize = (256*3 + 1) * 192; - else fbsize = 256 * 192; - if (Framebuffer[0][0]) delete[] Framebuffer[0][0]; - if (Framebuffer[1][0]) delete[] Framebuffer[1][0]; - if (Framebuffer[0][1]) delete[] Framebuffer[0][1]; - if (Framebuffer[1][1]) delete[] Framebuffer[1][1]; - Framebuffer[0][0] = new u32[fbsize]; - Framebuffer[1][0] = new u32[fbsize]; - Framebuffer[0][1] = new u32[fbsize]; - Framebuffer[1][1] = new u32[fbsize]; + int fbsize; + if (accel) fbsize = (256*3 + 1) * 192; + else fbsize = 256 * 192; + if (Framebuffer[0][0]) delete[] Framebuffer[0][0]; + if (Framebuffer[1][0]) delete[] Framebuffer[1][0]; + if (Framebuffer[0][1]) delete[] Framebuffer[0][1]; + if (Framebuffer[1][1]) delete[] Framebuffer[1][1]; + Framebuffer[0][0] = new u32[fbsize]; + Framebuffer[1][0] = new u32[fbsize]; + Framebuffer[0][1] = new u32[fbsize]; + Framebuffer[1][1] = new u32[fbsize]; - memset(Framebuffer[0][0], 0, fbsize*4); - memset(Framebuffer[1][0], 0, fbsize*4); - memset(Framebuffer[0][1], 0, fbsize*4); - memset(Framebuffer[1][1], 0, fbsize*4); + memset(Framebuffer[0][0], 0, fbsize*4); + memset(Framebuffer[1][0], 0, fbsize*4); + memset(Framebuffer[0][1], 0, fbsize*4); + memset(Framebuffer[1][1], 0, fbsize*4); - AssignFramebuffers(); - } + AssignFramebuffers(); GPU2D_A->SetDisplaySettings(accel); GPU2D_B->SetDisplaySettings(accel); diff --git a/src/libui_sdl/main.cpp b/src/libui_sdl/main.cpp index f6ef397a..874d8ff3 100644 --- a/src/libui_sdl/main.cpp +++ b/src/libui_sdl/main.cpp @@ -384,7 +384,7 @@ void GLScreen_DrawScreen() OpenGL_UseShaderProgram(GL_ScreenShaderAccel); glBindFramebuffer(GL_FRAMEBUFFER, 0); - glClearColor(0, 1, 0, 1); + glClearColor(0, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT); int frontbuf = GPU::FrontBuffer;