57 static void deleteInstance();
67 void runDispatchLoop();
76 void stopDispatchLoop();
82 #if JUCE_MODAL_LOOPS_PERMITTED
127 void setCurrentThreadAsMessageThread();
187 virtual void messageCallback() = 0;
226 void enter()
const noexcept;
271 bool tryEnter()
const noexcept;
276 void exit()
const noexcept;
284 void abort()
const noexcept;
297 struct BlockingMessage;
300 bool exclusiveTryAcquire (
bool)
const noexcept;
301 bool tryAcquire (
bool)
const noexcept;
303 void setAcquired (
bool success)
const noexcept;
313 mutable std::mutex mutex;
315 mutable std::condition_variable condvar;
316 mutable bool abortWait =
false, acquired =
false;
322 void deliverBroadcastMessage (
const String&);
338 Atomic<
int> quitMessagePosted { 0 }, quitMessageReceived { 0 };
339 Thread::ThreadID messageThreadId;
340 Atomic<Thread::ThreadID> threadWithLock;
341 mutable std::mutex messageThreadIdMutex;
343 static bool postMessageToSystemQueue (MessageBase*);
344 static void* exitModalLoopCallback (
void*);
345 static void doPlatformSpecificInitialisation();
346 static void doPlatformSpecificShutdown();
348 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MessageManager)