| @@ -389,18 +389,19 @@ bool MessageManager::runDispatchLoopUntil (int millisecondsToRunFor) | |||||
| { | { | ||||
| JUCE_AUTORELEASEPOOL | JUCE_AUTORELEASEPOOL | ||||
| { | { | ||||
| CFRunLoopRunInMode (kCFRunLoopDefaultMode, 0.001, true); | |||||
| auto msRemaining = endTime - Time::currentTimeMillis(); | |||||
| NSEvent* e = [NSApp nextEventMatchingMask: NSEventMaskAny | |||||
| untilDate: [NSDate dateWithTimeIntervalSinceNow: 0.001] | |||||
| inMode: NSDefaultRunLoopMode | |||||
| dequeue: YES]; | |||||
| if (msRemaining <= 0) | |||||
| break; | |||||
| if (e != nil && (isEventBlockedByModalComps == nullptr || ! (*isEventBlockedByModalComps) (e))) | |||||
| [NSApp sendEvent: e]; | |||||
| CFRunLoopRunInMode (kCFRunLoopDefaultMode, jmin (1.0, msRemaining * 0.001), true); | |||||
| if (Time::currentTimeMillis() >= endTime) | |||||
| break; | |||||
| if (NSEvent* e = [NSApp nextEventMatchingMask: NSEventMaskAny | |||||
| untilDate: [NSDate dateWithTimeIntervalSinceNow: 0.001] | |||||
| inMode: NSDefaultRunLoopMode | |||||
| dequeue: YES]) | |||||
| if (isEventBlockedByModalComps == nullptr || ! (*isEventBlockedByModalComps) (e)) | |||||
| [NSApp sendEvent: e]; | |||||
| } | } | ||||
| } | } | ||||