From fac58f9986eeee2ef6b7c966465086121eedf84d Mon Sep 17 00:00:00 2001 From: Daryl Borth Date: Sat, 2 Mar 2019 16:38:08 -0700 Subject: [PATCH] cleanup screenshot memory management. --- source/menu.cpp | 9 ++------- source/vbagx.cpp | 1 - source/video.cpp | 10 ++++++++++ source/video.h | 1 + 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/source/menu.cpp b/source/menu.cpp index 2c4e706..7ef511c 100644 --- a/source/menu.cpp +++ b/source/menu.cpp @@ -1527,8 +1527,7 @@ static int MenuGame() delete gameScreenImg; delete gameScreen; gameScreen = NULL; - free(gameScreenPng); - gameScreenPng = NULL; + ClearScreenshot(); if(GCSettings.AutoloadGame) { ExitApp(); } @@ -4890,11 +4889,7 @@ MainMenu (int menu) if(gameScreen) delete gameScreen; - if(gameScreenPng) - { - free(gameScreenPng); - gameScreenPng = NULL; - } + ClearScreenshot(); // wait for keys to be depressed while(MenuRequested()) diff --git a/source/vbagx.cpp b/source/vbagx.cpp index e15b83d..706f1aa 100644 --- a/source/vbagx.cpp +++ b/source/vbagx.cpp @@ -389,7 +389,6 @@ int main(int argc, char *argv[]) savebuffer = (unsigned char *)malloc(SAVEBUFFERSIZE); browserList = (BROWSERENTRY *)malloc(sizeof(BROWSERENTRY)*MAX_BROWSER_SIZE); #endif - gameScreenPng = (u8 *)malloc(512*1024); InitGUIThreads(); bool autoboot = false; diff --git a/source/video.cpp b/source/video.cpp index a932d59..535763c 100644 --- a/source/video.cpp +++ b/source/video.cpp @@ -757,6 +757,16 @@ void TakeScreenshot() } } +void ClearScreenshot() +{ + if(gameScreenPng) + { + gameScreenPngSize = 0; + free(gameScreenPng); + gameScreenPng = NULL; + } +} + /**************************************************************************** * ResetVideo_Menu * diff --git a/source/video.h b/source/video.h index 4d950d8..4fc14e5 100644 --- a/source/video.h +++ b/source/video.h @@ -21,6 +21,7 @@ void StopGX(); void ResetVideo_Emu(); void ResetVideo_Menu(); void TakeScreenshot(); +void ClearScreenshot(); void Menu_Render(); void Menu_DrawImg(f32 xpos, f32 ypos, u16 width, u16 height, u8 data[], f32 degrees, f32 scaleX, f32 scaleY, u8 alphaF ); void Menu_DrawRectangle(f32 x, f32 y, f32 width, f32 height, GXColor color, u8 filled);