mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
MessageManager: Add mutex to isThisTheMessageThread() and setCurrentThreadAsMessageThread()
This commit is contained in:
parent
156d8c7058
commit
d246cc280d
2 changed files with 6 additions and 3 deletions
|
|
@ -225,6 +225,8 @@ void MessageManager::deregisterBroadcastListener (ActionListener* const listener
|
|||
//==============================================================================
|
||||
bool MessageManager::isThisTheMessageThread() const noexcept
|
||||
{
|
||||
const std::lock_guard<std::mutex> lock { messageThreadIdMutex };
|
||||
|
||||
return Thread::getCurrentThreadId() == messageThreadId;
|
||||
}
|
||||
|
||||
|
|
@ -232,10 +234,10 @@ void MessageManager::setCurrentThreadAsMessageThread()
|
|||
{
|
||||
auto thisThread = Thread::getCurrentThreadId();
|
||||
|
||||
if (messageThreadId != thisThread)
|
||||
{
|
||||
messageThreadId = thisThread;
|
||||
const std::lock_guard<std::mutex> lock { messageThreadIdMutex };
|
||||
|
||||
if (std::exchange (messageThreadId, thisThread) != thisThread)
|
||||
{
|
||||
#if JUCE_WINDOWS
|
||||
// This is needed on windows to make sure the message window is created by this thread
|
||||
doPlatformSpecificShutdown();
|
||||
|
|
|
|||
|
|
@ -328,6 +328,7 @@ private:
|
|||
Atomic<int> quitMessagePosted { 0 }, quitMessageReceived { 0 };
|
||||
Thread::ThreadID messageThreadId;
|
||||
Atomic<Thread::ThreadID> threadWithLock;
|
||||
mutable std::mutex messageThreadIdMutex;
|
||||
|
||||
static bool postMessageToSystemQueue (MessageBase*);
|
||||
static void* exitModalLoopCallback (void*);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue