aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--base/main.cpp4
-rw-r--r--common/osd_message_queue.cpp5
-rw-r--r--common/osd_message_queue.h2
3 files changed, 10 insertions, 1 deletions
diff --git a/base/main.cpp b/base/main.cpp
index 42f5910b3b..c52888a827 100644
--- a/base/main.cpp
+++ b/base/main.cpp
@@ -51,6 +51,7 @@
#include "common/textconsole.h"
#include "common/tokenizer.h"
#include "common/translation.h"
+#include "common/osd_message_queue.h"
#include "gui/gui-manager.h"
#include "gui/error.h"
@@ -477,6 +478,8 @@ extern "C" int scummvm_main(int argc, const char * const argv[]) {
g_eventRec.RegisterEventSource();
#endif
+ Common::OSDMessageQueue::instance().registerEventSource();
+
// Now as the event manager is created, setup the keymapper
setupKeymapper(system);
@@ -615,6 +618,7 @@ extern "C" int scummvm_main(int argc, const char * const argv[]) {
GUI::GuiManager::destroy();
Common::ConfigManager::destroy();
Common::DebugManager::destroy();
+ Common::OSDMessageQueue::destroy();
#ifdef ENABLE_EVENTRECORDER
GUI::EventRecorder::destroy();
#endif
diff --git a/common/osd_message_queue.cpp b/common/osd_message_queue.cpp
index ee2ee2d7c8..b8abf18bb5 100644
--- a/common/osd_message_queue.cpp
+++ b/common/osd_message_queue.cpp
@@ -28,13 +28,16 @@ namespace Common {
DECLARE_SINGLETON(OSDMessageQueue);
OSDMessageQueue::OSDMessageQueue() : _lastUpdate(0) {
- g_system->getEventManager()->getEventDispatcher()->registerSource(this, false);
}
OSDMessageQueue::~OSDMessageQueue() {
g_system->getEventManager()->getEventDispatcher()->unregisterSource(this);
}
+void OSDMessageQueue::registerEventSource() {
+ g_system->getEventManager()->getEventDispatcher()->registerSource(this, false);
+}
+
void OSDMessageQueue::addMessage(const char *msg) {
_mutex.lock();
_messages.push(msg);
diff --git a/common/osd_message_queue.h b/common/osd_message_queue.h
index 9348497b28..7aa7cf4792 100644
--- a/common/osd_message_queue.h
+++ b/common/osd_message_queue.h
@@ -39,6 +39,8 @@ public:
OSDMessageQueue();
~OSDMessageQueue();
+ void registerEventSource();
+
enum {
kMinimumDelay = 1000 /** < Minimum delay between two OSD messages (in milliseconds) */
};