1
0
Fork 0
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:
attila 2022-06-28 16:48:08 +02:00 committed by Attila Szarvas
parent 156d8c7058
commit d246cc280d
2 changed files with 6 additions and 3 deletions

View file

@ -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();

View file

@ -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*);