26class AsyncUpdater::AsyncUpdaterMessage :
public CallbackMessage
31 void messageCallback()
override
33 if (shouldDeliver.compareAndSetBool (0, 1))
34 owner.handleAsyncUpdate();
38 Atomic<int> shouldDeliver;
40 JUCE_DECLARE_NON_COPYABLE (AsyncUpdaterMessage)
46 activeMessage = *
new AsyncUpdaterMessage (*
this);
59 activeMessage->shouldDeliver.set (0);
66 JUCE_ASSERT_MESSAGE_MANAGER_EXISTS
68 if (activeMessage->shouldDeliver.compareAndSetBool (1, 0))
69 if (! activeMessage->post())
76 activeMessage->shouldDeliver.set (0);
82 JUCE_ASSERT_MESSAGE_MANAGER_IS_LOCKED
84 if (activeMessage->shouldDeliver.exchange (0) != 0)
90 return activeMessage->shouldDeliver.value != 0;
bool isUpdatePending() const noexcept
void handleUpdateNowIfNeeded()
virtual void handleAsyncUpdate()=0
void triggerAsyncUpdate()
void cancelPendingUpdate() noexcept
static MessageManager * getInstanceWithoutCreating() noexcept