diff options
author | orudge <orudge@openttd.org> | 2009-12-29 04:27:39 +0000 |
---|---|---|
committer | orudge <orudge@openttd.org> | 2009-12-29 04:27:39 +0000 |
commit | 00ede07b133e435b3fcdaf8e83ad0e1ec6a7a808 (patch) | |
tree | e257f3b7bde8ab2920111da33b1d6c537fe36243 | |
parent | 1f2159b54eb75826a498c7389d4abde868645bbe (diff) | |
download | openttd-00ede07b133e435b3fcdaf8e83ad0e1ec6a7a808.tar.xz |
(svn r18656) -Feature: Add event semaphore support for OS/2
-rw-r--r-- | src/thread/thread_os2.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/thread/thread_os2.cpp b/src/thread/thread_os2.cpp index 1145e8e41..c6c7db7df 100644 --- a/src/thread/thread_os2.cpp +++ b/src/thread/thread_os2.cpp @@ -94,16 +94,19 @@ private: class ThreadMutex_OS2 : public ThreadMutex { private: HMTX mutex; + HEV event; public: ThreadMutex_OS2() { DosCreateMutexSem(NULL, &mutex, 0, FALSE); + DosCreateEventSem(NULL, &event, 0, FALSE); } /* virtual */ ~ThreadMutex_OS2() { DosCloseMutexSem(mutex); + DosCloseEventSem(event); } /* virtual */ void BeginCritical() @@ -115,6 +118,18 @@ public: { DosReleaseMutexSem(mutex); } + + /* virtual */ void WaitForSignal() + { + this->EndCritical(); + DosWaitEventSem(event, SEM_INDEFINITE_WAIT); + this->BeginCritical(); + } + + /* virtual */ void SendSignal() + { + DosPostEventSem(event); + } }; /* static */ ThreadMutex *ThreadMutex::New() |