OpenShot Library | libopenshot-audio 0.2.0
|
This class is in charge of the application's event-dispatch loop. More...
#include <juce_MessageManager.h>
Classes | |
class | Lock |
A lock you can use to lock the message manager. More... | |
class | MessageBase |
Internal class used as the base class for all message objects. More... | |
Public Member Functions | |
void | runDispatchLoop () |
Runs the event dispatch loop until a stop message is posted. | |
void | stopDispatchLoop () |
Sends a signal that the dispatch loop should terminate. | |
bool | hasStopMessageBeenSent () const noexcept |
Returns true if the stopDispatchLoop() method has been called. | |
bool | runDispatchLoopUntil (int millisecondsToRunFor) |
Synchronously dispatches messages until a given time has elapsed. | |
void * | callFunctionOnMessageThread (MessageCallbackFunction *callback, void *userData) |
Calls a function using the message-thread. | |
bool | isThisTheMessageThread () const noexcept |
Returns true if the caller-thread is the message thread. | |
void | setCurrentThreadAsMessageThread () |
Called to tell the manager that the current thread is the one that's running the dispatch loop. | |
Thread::ThreadID | getCurrentMessageThread () const noexcept |
Returns the ID of the current message thread, as set by setCurrentThreadAsMessageThread(). | |
bool | currentThreadHasLockedMessageManager () const noexcept |
Returns true if the caller thread has currently got the message manager locked. | |
void | registerBroadcastListener (ActionListener *listener) |
Registers a listener to get told about broadcast messages. | |
void | deregisterBroadcastListener (ActionListener *listener) |
Deregisters a broadcast listener. | |
Static Public Member Functions | |
static MessageManager * | getInstance () |
Returns the global instance of the MessageManager. | |
static MessageManager * | getInstanceWithoutCreating () noexcept |
Returns the global instance of the MessageManager, or nullptr if it doesn't exist. | |
static void | deleteInstance () |
Deletes the global MessageManager instance. | |
template<typename FunctionType > | |
static void | callAsync (FunctionType functionToCall) |
Asynchronously invokes a function or C++11 lambda on the message thread. | |
static bool | existsAndIsLockedByCurrentThread () noexcept |
Returns true if there's an instance of the MessageManager, and if the current thread has the lock on it. | |
static bool | existsAndIsCurrentThread () noexcept |
Returns true if there's an instance of the MessageManager, and if the current thread is running it. | |
static void | broadcastMessage (const String &messageText) |
Sends a message to all other JUCE applications that are running. | |
Friends | |
class | MessageBase |
class | QuitMessage |
class | MessageManagerLock |
This class is in charge of the application's event-dispatch loop.
Definition at line 53 of file juce_MessageManager.h.
|
static |
Returns the global instance of the MessageManager.
Definition at line 45 of file juce_MessageManager.cpp.
Referenced by juce::JUCEApplicationBase::quit().
|
staticnoexcept |
Returns the global instance of the MessageManager, or nullptr if it doesn't exist.
Definition at line 56 of file juce_MessageManager.cpp.
Referenced by existsAndIsCurrentThread(), existsAndIsLockedByCurrentThread(), and juce::AsyncUpdater::~AsyncUpdater().
|
static |
Deletes the global MessageManager instance.
Does nothing if no instance had been created.
Definition at line 61 of file juce_MessageManager.cpp.
void juce::MessageManager::runDispatchLoop | ( | ) |
Runs the event dispatch loop until a stop message is posted.
This method is only intended to be run by the application's startup routine, as it blocks, and will only return after the stopDispatchLoop() method has been used.
void juce::MessageManager::stopDispatchLoop | ( | ) |
Sends a signal that the dispatch loop should terminate.
After this is called, the runDispatchLoop() or runDispatchLoopUntil() methods will be interrupted and will return.
|
inlinenoexcept |
Returns true if the stopDispatchLoop() method has been called.
Definition at line 89 of file juce_MessageManager.h.
Synchronously dispatches messages until a given time has elapsed.
Returns false if a quit message has been posted by a call to stopDispatchLoop(), otherwise returns true.
|
inlinestatic |
Asynchronously invokes a function or C++11 lambda on the message thread.
Definition at line 103 of file juce_MessageManager.h.
void * juce::MessageManager::callFunctionOnMessageThread | ( | MessageCallbackFunction * | callback, |
void * | userData | ||
) |
Calls a function using the message-thread.
This can be used by any thread to cause this function to be called-back by the message thread. If it's the message-thread that's calling this method, then the function will just be called; if another thread is calling, a message will be posted to the queue, and this method will block until that message is delivered, the function is called, and the result is returned.
Be careful not to cause any deadlocks with this! It's easy to do - e.g. if the caller thread has a critical section locked, which an unrelated message callback then tries to lock before the message thread gets round to processing this callback.
callback | the function to call - its signature must be |
userData | a user-defined pointer that will be passed to the function that gets called |
Definition at line 167 of file juce_MessageManager.cpp.
References currentThreadHasLockedMessageManager(), and isThisTheMessageThread().
|
noexcept |
Returns true if the caller-thread is the message thread.
Definition at line 209 of file juce_MessageManager.cpp.
References juce::Thread::getCurrentThreadId().
Referenced by callFunctionOnMessageThread().
void juce::MessageManager::setCurrentThreadAsMessageThread | ( | ) |
Called to tell the manager that the current thread is the one that's running the dispatch loop.
(Best to ignore this method unless you really know what you're doing..)
Definition at line 214 of file juce_MessageManager.cpp.
References juce::Thread::getCurrentThreadId().
|
inlinenoexcept |
Returns the ID of the current message thread, as set by setCurrentThreadAsMessageThread().
(Best to ignore this method unless you really know what you're doing..)
Definition at line 143 of file juce_MessageManager.h.
|
noexcept |
Returns true if the caller thread has currently got the message manager locked.
see the MessageManagerLock class for more info about this.
This will be true if the caller is the message thread, because that automatically gains a lock while a message is being dispatched.
Definition at line 228 of file juce_MessageManager.cpp.
References juce::Atomic< Type >::get(), and juce::Thread::getCurrentThreadId().
Referenced by callFunctionOnMessageThread().
|
staticnoexcept |
Returns true if there's an instance of the MessageManager, and if the current thread has the lock on it.
Definition at line 234 of file juce_MessageManager.cpp.
References getInstanceWithoutCreating().
|
staticnoexcept |
Returns true if there's an instance of the MessageManager, and if the current thread is running it.
Definition at line 242 of file juce_MessageManager.cpp.
References getInstanceWithoutCreating().
Sends a message to all other JUCE applications that are running.
messageText | the string that will be passed to the actionListenerCallback() method of the broadcast listeners in the other app. |
void juce::MessageManager::registerBroadcastListener | ( | ActionListener * | listener | ) |
Registers a listener to get told about broadcast messages.
The actionListenerCallback() callback's string parameter is the message passed into broadcastMessage().
Definition at line 194 of file juce_MessageManager.cpp.
void juce::MessageManager::deregisterBroadcastListener | ( | ActionListener * | listener | ) |
Deregisters a broadcast listener.
Definition at line 202 of file juce_MessageManager.cpp.
|
friend |
Definition at line 331 of file juce_MessageManager.h.
Definition at line 333 of file juce_MessageManager.h.
|
friend |
Definition at line 334 of file juce_MessageManager.h.