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);