83#if ! (JUCE_MAC || JUCE_IOS || JUCE_ANDROID)
95 mm->quitMessageReceived =
true;
122#if JUCE_MODAL_LOOPS_PERMITTED
123bool MessageManager::runDispatchLoopUntil (
int millisecondsToRunFor)
125 jassert (isThisTheMessageThread());
129 while (quitMessageReceived.
get() == 0)
138 if (millisecondsToRunFor >= 0 && Time::currentTimeMillis() >= endTime)
175 return func (parameter);
196 AsyncCallInvoker (std::function<
void()>
f) :
callback (std::move (
f)) {}
197 void messageCallback()
override {
callback(); }
201 return (
new AsyncCallInvoker (std::move (
fn)))->post();
256 return i->currentThreadHasLockedMessageManager();
264 return i->isThisTheMessageThread();
291 if (
auto* o =
owner.get())
292 o->messageCallback();
321 if (! lockIsMandatory && (
abortWait.get() != 0))
327 if (
mm->currentThreadHasLockedMessageManager())
361 }
while (lockIsMandatory);
379 if (
lockGained.compareAndSetBool (
false,
true))
383 jassert (
mm ==
nullptr ||
mm->currentThreadHasLockedMessageManager());
387 mm->threadWithLock = {};
420 jassert (threadToCheck ==
nullptr || jobToCheck ==
nullptr);
422 if (threadToCheck !=
nullptr)
425 if (jobToCheck !=
nullptr)
430 && (jobToCheck ==
nullptr || ! jobToCheck->
shouldExit()))
436 if (threadToCheck !=
nullptr)
444 if (jobToCheck !=
nullptr)
#define noexcept
Definition DistrhoDefines.h:72
#define nullptr
Definition DistrhoDefines.h:75
static void message(int level, const char *fmt,...)
Definition adplugdb.cpp:120
Definition juce_ActionBroadcaster.h:37
Definition juce_ActionListener.h:35
Definition juce_MessageManager.cpp:150
MessageCallbackFunction *const func
Definition juce_MessageManager.cpp:166
WaitableEvent finished
Definition juce_MessageManager.cpp:162
AsyncFunctionCallback(MessageCallbackFunction *const f, void *const param)
Definition juce_MessageManager.cpp:152
std::atomic< void * > result
Definition juce_MessageManager.cpp:163
void *const parameter
Definition juce_MessageManager.cpp:167
void messageCallback() override
Definition juce_MessageManager.cpp:156
Definition juce_CriticalSection.h:43
static void deleteAll()
Definition juce_DeletedAtShutdown.cpp:50
static bool isStandaloneApp() noexcept
Definition juce_ApplicationBase.h:267
Definition juce_MessageManager.h:200
WaitableEvent lockedEvent
Definition juce_MessageManager.h:305
Atomic< int > lockGained
Definition juce_MessageManager.h:306
Lock()
Definition juce_MessageManager.cpp:306
bool tryAcquire(bool) const noexcept
Definition juce_MessageManager.cpp:311
ReferenceCountedObjectPtr< BlockingMessage > blockingMessage
Definition juce_MessageManager.h:304
~Lock()
Definition juce_MessageManager.cpp:307
void enter() const noexcept
Definition juce_MessageManager.cpp:308
void messageCallback() const
Definition juce_MessageManager.cpp:397
void abort() const noexcept
Definition juce_MessageManager.cpp:403
bool tryEnter() const noexcept
Definition juce_MessageManager.cpp:309
void exit() const noexcept
Definition juce_MessageManager.cpp:377
Atomic< int > abortWait
Definition juce_MessageManager.h:306
Definition juce_MessageManager.h:182
ReferenceCountedObjectPtr< MessageBase > Ptr
Definition juce_MessageManager.h:190
bool post()
Definition juce_MessageManager.cpp:69
Definition juce_MessageManager.cpp:88
void messageCallback() override
Definition juce_MessageManager.cpp:92
QuitMessage()
Definition juce_MessageManager.cpp:90
Definition juce_MessageManager.h:45
static MessageManager * instance
Definition juce_MessageManager.h:320
static bool callAsync(std::function< void()> functionToCall)
Definition juce_MessageManager.cpp:192
static void doPlatformSpecificShutdown()
Definition juce_linux_Messaging.cpp:310
Atomic< int > quitMessageReceived
Definition juce_MessageManager.h:328
bool isThisTheMessageThread() const noexcept
Definition juce_MessageManager.cpp:226
static void doPlatformSpecificInitialisation()
Definition juce_linux_Messaging.cpp:301
static bool existsAndIsCurrentThread() noexcept
Definition juce_MessageManager.cpp:261
void runDispatchLoop()
Definition juce_MessageManager.cpp:101
void stopDispatchLoop()
Definition juce_MessageManager.cpp:116
bool currentThreadHasLockedMessageManager() const noexcept
Definition juce_MessageManager.cpp:247
Atomic< Thread::ThreadID > threadWithLock
Definition juce_MessageManager.h:330
void * callFunctionOnMessageThread(MessageCallbackFunction *callback, void *userData)
Definition juce_MessageManager.cpp:172
Atomic< int > quitMessagePosted
Definition juce_MessageManager.h:328
void deregisterBroadcastListener(ActionListener *listener)
Definition juce_MessageManager.cpp:219
Thread::ThreadID messageThreadId
Definition juce_MessageManager.h:329
std::unique_ptr< ActionBroadcaster > broadcaster
Definition juce_MessageManager.h:327
void setCurrentThreadAsMessageThread()
Definition juce_MessageManager.cpp:231
void deliverBroadcastMessage(const String &)
Definition juce_MessageManager.cpp:205
static bool existsAndIsLockedByCurrentThread() noexcept
Definition juce_MessageManager.cpp:253
void registerBroadcastListener(ActionListener *listener)
Definition juce_MessageManager.cpp:211
static bool postMessageToSystemQueue(MessageBase *)
Definition juce_linux_Messaging.cpp:316
static void deleteInstance()
Definition juce_MessageManager.cpp:63
static MessageManager * getInstanceWithoutCreating() noexcept
Definition juce_MessageManager.cpp:58
MessageManager() noexcept
Definition juce_MessageManager.cpp:26
~MessageManager() noexcept
Definition juce_MessageManager.cpp:35
static MessageManager * getInstance()
Definition juce_MessageManager.cpp:47
bool locked
Definition juce_MessageManager.h:450
bool attemptLock(Thread *, ThreadPoolJob *)
Definition juce_MessageManager.cpp:418
MessageManager::Lock mmLock
Definition juce_MessageManager.h:449
~MessageManagerLock() override
Definition juce_MessageManager.cpp:455
MessageManagerLock(Thread *threadToCheckForExitSignal=nullptr)
Definition juce_MessageManager.cpp:410
void exitSignalSent() override
Definition juce_MessageManager.cpp:457
Definition juce_ReferenceCountedObject.h:247
~ScopedJuceInitialiser_GUI()
Definition juce_MessageManager.cpp:483
ScopedJuceInitialiser_GUI()
Definition juce_MessageManager.cpp:482
Definition juce_String.h:53
Definition juce_Thread.h:43
bool threadShouldExit() const
Definition juce_Thread.cpp:177
static ThreadID JUCE_CALLTYPE getCurrentThreadId()
Definition juce_posix_SharedCode.h:1028
static void JUCE_CALLTYPE setCurrentThreadName(const String &newThreadName)
Definition juce_posix_SharedCode.h:975
void addListener(Listener *)
Definition juce_Thread.cpp:242
void removeListener(Listener *)
Definition juce_Thread.cpp:247
static void JUCE_CALLTYPE sleep(int milliseconds)
Definition juce_posix_SharedCode.h:44
Definition juce_ThreadPool.h:45
void addListener(Thread::Listener *)
Definition juce_ThreadPool.cpp:74
bool shouldExit() const noexcept
Definition juce_ThreadPool.h:107
void removeListener(Thread::Listener *)
Definition juce_ThreadPool.cpp:79
static int64 currentTimeMillis() noexcept
Definition juce_Time.cpp:220
Definition juce_WaitableEvent.h:36
register unsigned i
Definition inflate.c:1575
unsigned f
Definition inflate.c:1572
static PuglViewHint int value
Definition pugl.h:1708
static uintptr_t parent
Definition pugl.h:1644
CARLA_PLUGIN_EXPORT void exit(int status)
Definition interposer-safe.cpp:70
#define JUCE_TRY
Definition juce_ApplicationBase.h:329
#define JUCE_CATCH_EXCEPTION
Definition juce_ApplicationBase.h:330
#define JUCE_AUTORELEASEPOOL
Definition juce_Memory.h:158
#define JUCE_API
Definition juce_StandardHeader.h:152
#define JUCE_VERSION_ID
Definition juce_StandardHeader.h:45
Definition carla_juce.cpp:31
CriticalSection::ScopedLockType ScopedLock
Definition juce_CriticalSection.h:186
static int numScopedInitInstances
Definition juce_MessageManager.cpp:480
jack_client_t client jack_client_t client jack_client_t client jack_client_t JackInfoShutdownCallback void arg jack_client_t jack_port_t port void(* func)(const char *))
Definition juce_linux_JackAudio.cpp:67
void *(void *userData) MessageCallbackFunction
Definition juce_MessageManager.h:33
void deleteAndZero(Type &pointer)
Definition juce_Memory.h:40
bool dispatchNextMessageOnSystemQueue(bool returnIfNoPendingMessages)
Definition juce_linux_Messaging.cpp:333
JUCE_API void JUCE_CALLTYPE shutdownJuce_GUI()
Definition juce_MessageManager.cpp:471
JUCE_API void JUCE_CALLTYPE initialiseJuce_GUI()
Definition juce_MessageManager.cpp:463
Definition juce_Atomic.h:42
Type get() const noexcept
Definition juce_Atomic.h:64
Definition juce_MessageManager.cpp:281
CriticalSection ownerCriticalSection
Definition juce_MessageManager.cpp:298
Atomic< const MessageManager::Lock * > owner
Definition juce_MessageManager.cpp:299
WaitableEvent releaseEvent
Definition juce_MessageManager.cpp:300
BlockingMessage(const MessageManager::Lock *parent) noexcept
Definition juce_MessageManager.cpp:282
void messageCallback() override
Definition juce_MessageManager.cpp:286
const char const char const char const char char * fn
Definition swell-functions.h:168
RECT const char void(* callback)(const char *droppath))) SWELL_API_DEFINE(BOOL
Definition swell-functions.h:1004
ZCONST char * post
Definition fileio.c:2493
#define void
Definition unzip.h:396
mm
Definition zipinfo.c:2291
#define const
Definition zconf.h:137