From 22e4c80cc35e552ef39639a874f3c54f11fde747 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Mon, 24 Dec 2012 17:16:22 +0300 Subject: Fix for race conditions in application termination. This bug mostly visible in windows. --- src/client.cpp | 3 +++ src/soundmanager.cpp | 4 ++++ src/soundmanager.h | 2 ++ src/touchmanager.cpp | 6 +++++- src/touchmanager.h | 2 ++ 5 files changed, 16 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/client.cpp b/src/client.cpp index 85a224b41..8180b22c1 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -809,6 +809,9 @@ void Client::gameClear() if (logger) logger->log1("Quitting10"); + sound.shutdown(); + touchManager.shutdown(); + #ifdef DEBUG_CONFIG config.enableKeyLogging(); #endif diff --git a/src/soundmanager.cpp b/src/soundmanager.cpp index d1a6a5d74..7ab66110a 100644 --- a/src/soundmanager.cpp +++ b/src/soundmanager.cpp @@ -65,6 +65,10 @@ SoundManager::SoundManager(): } SoundManager::~SoundManager() +{ +} + +void SoundManager::shutdown() { config.removeListeners(this); diff --git a/src/soundmanager.h b/src/soundmanager.h index 4ea36c27e..d36cad92b 100644 --- a/src/soundmanager.h +++ b/src/soundmanager.h @@ -145,6 +145,8 @@ class SoundManager final : public ConfigListener */ void logic(); + void shutdown(); + private: /** Logs various info about sound device. */ void info() const; diff --git a/src/touchmanager.cpp b/src/touchmanager.cpp index 313337259..3dd9e64a9 100644 --- a/src/touchmanager.cpp +++ b/src/touchmanager.cpp @@ -54,12 +54,16 @@ TouchManager::TouchManager() : TouchManager::~TouchManager() { - config.removeListeners(this); clear(); delete mVertexes; mVertexes = nullptr; } +void TouchManager::shutdown() +{ + config.removeListeners(this); +} + void TouchManager::init() { config.addListener("showScreenJoystick", this); diff --git a/src/touchmanager.h b/src/touchmanager.h index c9f018b7f..05b062074 100644 --- a/src/touchmanager.h +++ b/src/touchmanager.h @@ -142,6 +142,8 @@ class TouchManager final : public ConfigListener void setTempHide(bool b); + void shutdown(); + private: TouchItem *mKeyboard; TouchItem *mPad; -- cgit v1.2.3-60-g2f50