From a3ad7b73f32bba1720c356322e8b52df1354d9be Mon Sep 17 00:00:00 2001 From: Misa Date: Mon, 15 Feb 2021 17:47:11 -0800 Subject: [PATCH] Add Screen::destroy() In order to have squeaky-clean memory management, we'll need to clean up all the things that Screen allocates. This is the function to call to do so. --- desktop_version/src/Screen.cpp | 15 +++++++++++++++ desktop_version/src/Screen.h | 1 + 2 files changed, 16 insertions(+) diff --git a/desktop_version/src/Screen.cpp b/desktop_version/src/Screen.cpp index 88b1f535..7c7c6599 100644 --- a/desktop_version/src/Screen.cpp +++ b/desktop_version/src/Screen.cpp @@ -93,6 +93,21 @@ void Screen::init(const ScreenSettings& settings) ResizeScreen(settings.windowWidth, settings.windowHeight); } +void Screen::destroy() +{ +#define X(CLEANUP, POINTER) \ + CLEANUP(POINTER); \ + POINTER = NULL; + + /* Order matters! */ + X(SDL_DestroyTexture, m_screenTexture); + X(SDL_FreeSurface, m_screen); + X(SDL_DestroyRenderer, m_renderer); + X(SDL_DestroyWindow, m_window); + +#undef X +} + void Screen::GetSettings(ScreenSettings* settings) { int width, height; diff --git a/desktop_version/src/Screen.h b/desktop_version/src/Screen.h index b13a7be0..365cf9ea 100644 --- a/desktop_version/src/Screen.h +++ b/desktop_version/src/Screen.h @@ -9,6 +9,7 @@ class Screen { public: void init(const ScreenSettings& settings); + void destroy(); void GetSettings(ScreenSettings* settings);