diff options
author | Alejandro Marzini | 2010-06-15 05:15:34 +0000 |
---|---|---|
committer | Alejandro Marzini | 2010-06-15 05:15:34 +0000 |
commit | d2f9355aee5ad0dae6a2ebf34847901730cc441b (patch) | |
tree | 7fda810bd0a4629ea09c2e3aa091654030da8cf6 /backends | |
parent | e1ef3cd9fc059ebe8c606d330173bc3f71f8dce7 (diff) | |
download | scummvm-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.cpp | 19 | ||||
-rw-r--r-- | backends/platform/sdl/main.cpp | 2 | ||||
-rw-r--r-- | backends/platform/sdl/sdl.cpp | 22 |
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() { |