aboutsummaryrefslogtreecommitdiff
path: root/gui/ThemeRenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/ThemeRenderer.cpp')
-rw-r--r--gui/ThemeRenderer.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/gui/ThemeRenderer.cpp b/gui/ThemeRenderer.cpp
index fc6f34fa9c..679db6c3e7 100644
--- a/gui/ThemeRenderer.cpp
+++ b/gui/ThemeRenderer.cpp
@@ -123,6 +123,15 @@ ThemeRenderer::ThemeRenderer(Common::String themeName, GraphicsMode mode) :
_themeName = themeName;
}
+ThemeRenderer::~ThemeRenderer() {
+ freeRenderer();
+ freeScreen();
+ freeBackbuffer();
+ unloadTheme();
+ delete _parser;
+ delete _themeEval;
+}
+
bool ThemeRenderer::init() {
// reset everything and reload the graphics
deinit();
@@ -174,17 +183,16 @@ void ThemeRenderer::disable() {
template<typename PixelType>
void ThemeRenderer::screenInit(bool backBuffer) {
- freeScreen();
- freeBackbuffer();
-
uint32 width = _system->getOverlayWidth();
uint32 height = _system->getOverlayHeight();
if (backBuffer) {
+ freeBackbuffer();
_backBuffer = new Surface;
_backBuffer->create(width, height, sizeof(PixelType));
}
+ freeScreen();
_screen = new Surface;
_screen->create(width, height, sizeof(PixelType));
_system->clearOverlay();