macOS: Use single call site for timer processing in event dispatcher
Makes it easier to add shared logic later on. The call to maybeCancelWaitForMoreEvents() has been left out as it was not called from all call sites. Change-Id: Ibcb10ab4d788de80850b0e5a4286b4d49091cddb Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>bb10
parent
5ed48895b6
commit
d115196010
|
|
@ -153,6 +153,7 @@ public:
|
|||
void maybeStopCFRunLoopTimer();
|
||||
static void runLoopTimerCallback(CFRunLoopTimerRef, void *info);
|
||||
static void activateTimersSourceCallback(void *info);
|
||||
bool processTimers();
|
||||
|
||||
// Set 'blockSendPostedEvents' to true if you _really_ need
|
||||
// to make sure that qt events are not posted while calling
|
||||
|
|
|
|||
|
|
@ -120,11 +120,17 @@ void QCocoaEventDispatcherPrivate::runLoopTimerCallback(CFRunLoopTimerRef, void
|
|||
void QCocoaEventDispatcherPrivate::activateTimersSourceCallback(void *info)
|
||||
{
|
||||
QCocoaEventDispatcherPrivate *d = static_cast<QCocoaEventDispatcherPrivate *>(info);
|
||||
(void) d->timerInfoList.activateTimers();
|
||||
d->maybeStartCFRunLoopTimer();
|
||||
d->processTimers();
|
||||
d->maybeCancelWaitForMoreEvents();
|
||||
}
|
||||
|
||||
bool QCocoaEventDispatcherPrivate::processTimers()
|
||||
{
|
||||
int activated = timerInfoList.activateTimers();
|
||||
maybeStartCFRunLoopTimer();
|
||||
return activated > 0;
|
||||
}
|
||||
|
||||
void QCocoaEventDispatcherPrivate::maybeStartCFRunLoopTimer()
|
||||
{
|
||||
if (timerInfoList.isEmpty()) {
|
||||
|
|
@ -500,10 +506,9 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
|
|||
} while (!d->interrupt && event);
|
||||
|
||||
if ((d->processEventsFlags & QEventLoop::EventLoopExec) == 0) {
|
||||
// when called "manually", always send posted events and timers
|
||||
// When called "manually", always process posted events and timers
|
||||
d->processPostedEvents();
|
||||
retVal = d->timerInfoList.activateTimers() > 0 || retVal;
|
||||
d->maybeStartCFRunLoopTimer();
|
||||
retVal = d->processTimers() || retVal;
|
||||
}
|
||||
|
||||
// be sure to return true if the posted event source fired
|
||||
|
|
|
|||
Loading…
Reference in New Issue