diff options
author | Max Horn | 2004-03-15 01:52:07 +0000 |
---|---|---|
committer | Max Horn | 2004-03-15 01:52:07 +0000 |
commit | af80eef70e4f6ec3585425a9e0b8f3614cbbd57f (patch) | |
tree | f89741d681c5447556f66e8d6bf155bbbc66b6fa /common/system.h | |
parent | 2314cdf03635deb54e1b93eba32a914227f262d9 (diff) | |
download | scummvm-rg350-af80eef70e4f6ec3585425a9e0b8f3614cbbd57f.tar.gz scummvm-rg350-af80eef70e4f6ec3585425a9e0b8f3614cbbd57f.tar.bz2 scummvm-rg350-af80eef70e4f6ec3585425a9e0b8f3614cbbd57f.zip |
fix circular header dependency, by moving StackLock class to common/system.h (it ties closely into OSystem anyway)
svn-id: r13292
Diffstat (limited to 'common/system.h')
-rw-r--r-- | common/system.h | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/common/system.h b/common/system.h index 3afe519617..3ddf4982d7 100644 --- a/common/system.h +++ b/common/system.h @@ -25,6 +25,8 @@ #include "common/scummsys.h" #include "common/savefile.h" +#include "common/util.h" +#include "common/rect.h" /** @@ -479,7 +481,19 @@ public: - /** @name Mutex handling */ + /** + * @name Mutex handling + * Historically, the OSystem API used to have a method which allowed + * creating threads. Hence mutex support was needed for thread syncing. + * To ease portability, though, we decided to remove the threading API. + * Instead, we now use timers (see setTimerCallback() and Common::Timer). + * But since those may be implemented using threads (and in fact, that's + * how our primary backend, the SDL one, does it on many systems), we + * still have to do mutex syncing in our timer callbacks. + * + * Hence backends which do not use threads to implement the timers simply + * can use dummy implementations for these methods. + */ //@{ typedef struct Mutex *MutexRef; @@ -570,5 +584,24 @@ public: /** The global OSystem instance. Inited in main(). */ #define g_system (OSystem::instance()) +namespace Common { + +/** + * Auxillary class to (un)lock a mutex on the stack. + */ +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(); +}; + +} // End of namespace Common + #endif |