1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-02-07 04:10:08 +00:00
This commit is contained in:
jules 2007-07-17 15:06:38 +00:00
parent 05187d383b
commit 7989702525
25 changed files with 344 additions and 182 deletions

View file

@ -332,7 +332,8 @@ bool MessageManager::currentThreadHasLockedMessageManager() const
}
//==============================================================================
MessageManagerLock::MessageManagerLock()
MessageManagerLock::MessageManagerLock() throw()
: locked (true)
{
if (MessageManager::instance != 0)
{
@ -342,9 +343,36 @@ MessageManagerLock::MessageManagerLock()
}
}
MessageManagerLock::~MessageManagerLock()
MessageManagerLock::MessageManagerLock (Thread* const thread) throw()
{
jassert (thread != 0); // This will only work if you give it a valid thread!
if (MessageManager::instance != 0)
{
for (;;)
{
if (MessageManager::instance->messageDispatchLock.tryEnter())
{
locked = true;
lastLockingThreadId = MessageManager::instance->currentLockingThreadId;
MessageManager::instance->currentLockingThreadId = Thread::getCurrentThreadId();
break;
}
if (thread != 0 && thread->threadShouldExit())
{
locked = false;
break;
}
Thread::sleep (1);
}
}
}
MessageManagerLock::~MessageManagerLock() throw()
{
if (locked && MessageManager::instance != 0)
{
MessageManager::instance->currentLockingThreadId = lastLockingThreadId;
MessageManager::instance->messageDispatchLock.exit();