aboutsummaryrefslogtreecommitdiff
path: root/backends
diff options
context:
space:
mode:
authorAlejandro Marzini2010-06-15 05:15:34 +0000
committerAlejandro Marzini2010-06-15 05:15:34 +0000
commitd2f9355aee5ad0dae6a2ebf34847901730cc441b (patch)
tree7fda810bd0a4629ea09c2e3aa091654030da8cf6 /backends
parente1ef3cd9fc059ebe8c606d330173bc3f71f8dce7 (diff)
downloadscummvm-rg350-d2f9355aee5ad0dae6a2ebf34847901730cc441b.tar.gz
scummvm-rg350-d2f9355aee5ad0dae6a2ebf34847901730cc441b.tar.bz2
scummvm-rg350-d2f9355aee5ad0dae6a2ebf34847901730cc441b.zip
Improved ModularBackend and OSystem_SDL destructors.
svn-id: r49679
Diffstat (limited to 'backends')
-rw-r--r--backends/modular-backend.cpp19
-rw-r--r--backends/platform/sdl/main.cpp2
-rw-r--r--backends/platform/sdl/sdl.cpp22
3 files changed, 28 insertions, 15 deletions
diff --git a/backends/modular-backend.cpp b/backends/modular-backend.cpp
index ce83aa1f0f..935b64dc36 100644
--- a/backends/modular-backend.cpp
+++ b/backends/modular-backend.cpp
@@ -40,11 +40,20 @@ ModularBackend::ModularBackend()
}
ModularBackend::~ModularBackend() {
- delete _eventManager;
- delete _mutexManager;
- delete _graphicsManager;
- delete _mixer;
- delete _audiocdManager;
+ if (_eventManager != 0)
+ delete _eventManager;
+ if (_graphicsManager != 0)
+ delete _graphicsManager;
+ if (_mixer != 0)
+ delete _mixer;
+ if (_audiocdManager != 0)
+ delete _audiocdManager;
+ if (_savefileManager != 0)
+ delete _savefileManager;
+ if (_timerManager != 0)
+ delete _timerManager;
+ if (_mutexManager != 0)
+ delete _mutexManager;
}
bool ModularBackend::hasFeature(Feature f) {
diff --git a/backends/platform/sdl/main.cpp b/backends/platform/sdl/main.cpp
index 13e614a4a2..69eca9f8a2 100644
--- a/backends/platform/sdl/main.cpp
+++ b/backends/platform/sdl/main.cpp
@@ -63,7 +63,7 @@ int main(int argc, char *argv[]) {
// Invoke the actual ScummVM main entry point:
int res = scummvm_main(argc, argv);
- ((OSystem_SDL *)g_system)->deinit();
+ delete (OSystem_SDL *)g_system;
return res;
}
diff --git a/backends/platform/sdl/sdl.cpp b/backends/platform/sdl/sdl.cpp
index 225c3180b7..37c01dfc1f 100644
--- a/backends/platform/sdl/sdl.cpp
+++ b/backends/platform/sdl/sdl.cpp
@@ -169,9 +169,7 @@ OSystem_SDL::OSystem_SDL()
}
OSystem_SDL::~OSystem_SDL() {
- delete _mixer;
- delete _savefileManager;
- delete _timerManager;
+ deinit();
}
void OSystem_SDL::addSysArchivesToSearchSet(Common::SearchSet &s, int priority) {
@@ -299,16 +297,22 @@ void OSystem_SDL::setWindowCaption(const char *caption) {
void OSystem_SDL::deinit() {
SDL_ShowCursor(SDL_ENABLE);
+ delete _eventManager;
+ _eventManager = 0;
+ delete _savefileManager;
+ _savefileManager = 0;
+ delete _graphicsManager;
+ _graphicsManager = 0;
+ delete _audiocdManager;
+ _audiocdManager = 0;
delete _mixer;
-
+ _mixer = 0;
delete _timerManager;
+ _timerManager = 0;
+ delete _mutexManager;
+ _mutexManager = 0;
SDL_Quit();
-
- // Event Manager requires save manager for storing
- // recorded events
- delete _eventManager;
- delete _savefileManager;
}
void OSystem_SDL::quit() {