aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/system.cpp21
-rw-r--r--common/system.h24
2 files changed, 31 insertions, 14 deletions
diff --git a/common/system.cpp b/common/system.cpp
index ce9ba67c3c..b9cfb8de8f 100644
--- a/common/system.cpp
+++ b/common/system.cpp
@@ -26,6 +26,8 @@
#include "base/gameDetector.h"
+#include "gui/message.h"
+
#include "common/config-manager.h"
#include "common/system.h"
@@ -84,15 +86,20 @@ bool OSystem::setGraphicsMode(const char *name) {
return false;
}
+void OSystem::displayMessageOnOSD(const char *msg) {
+ // Display the message for 1.5 seconds
+ GUI::TimedMessageDialog dialog(msg, 1500);
+ dialog.runModal();
+}
+
+
#pragma mark -
namespace Common {
-StackLock::StackLock(OSystem::MutexRef mutex, OSystem *syst, const char *mutexName)
- : _mutex(mutex), _syst(syst), _mutexName(mutexName) {
- if (syst == 0)
- _syst = g_system;
+StackLock::StackLock(OSystem::MutexRef mutex, const char *mutexName)
+ : _mutex(mutex), _mutexName(mutexName) {
lock();
}
@@ -101,19 +108,17 @@ StackLock::~StackLock() {
}
void StackLock::lock() {
- assert(_syst);
if (_mutexName != NULL)
debug(6, "Locking mutex %s", _mutexName);
- _syst->lockMutex(_mutex);
+ g_system->lockMutex(_mutex);
}
void StackLock::unlock() {
- assert(_syst);
if (_mutexName != NULL)
debug(6, "Unlocking mutex %s", _mutexName);
- _syst->unlockMutex(_mutex);
+ g_system->unlockMutex(_mutex);
}
} // End of namespace Common
diff --git a/common/system.h b/common/system.h
index 8f9b5a7464..2039085fdb 100644
--- a/common/system.h
+++ b/common/system.h
@@ -602,12 +602,25 @@ public:
virtual void quit() = 0;
/**
- * Set a window caption or any other comparable status display to the
- * given value.
- * @param caption the window caption to use from now on
+ * Set a window caption or any other comparable status display to the
+ * given value.
+ * @param caption the window caption to use from now on
*/
virtual void setWindowCaption(const char *caption) {}
-
+
+ /**
+ * Display a message in an 'on screen display'. That is, display it in a
+ * fashion where it is visible on or near the screen (e.g. in a transparent
+ * rectangle over the regular screen content; or in a message box beneath
+ * it; etc.).
+ *
+ * @note There is a default implementation which uses a TimedMessageDialog
+ * to display the message. Hence implementing this is optional.
+ *
+ * @param msg the message to display on screen
+ */
+ virtual void displayMessageOnOSD(const char *msg);
+
/** Savefile management. */
virtual SaveFileManager *get_savefile_manager() {
return new SaveFileManager();
@@ -626,13 +639,12 @@ namespace Common {
*/
class StackLock {
OSystem::MutexRef _mutex;
- OSystem *_syst;
const char *_mutexName;
void lock();
void unlock();
public:
- StackLock(OSystem::MutexRef mutex, OSystem *syst = 0, const char *mutexName = NULL);
+ StackLock(OSystem::MutexRef mutex, const char *mutexName = NULL);
~StackLock();
};