diff --git a/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterEngine.mm b/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterEngine.mm index e60041d0232..325a003c5df 100644 --- a/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterEngine.mm +++ b/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterEngine.mm @@ -1565,16 +1565,16 @@ static void SetThreadPriority(FlutterThreadPriority priority) { const auto engine_time = _embedderAPI.GetCurrentTime(); [FlutterRunLoop.mainRunLoop - performBlock:^{ - FlutterEngine* self = weakSelf; - if (self != nil && self->_engine != nil) { - auto result = _embedderAPI.RunTask(self->_engine, &task); - if (result != kSuccess) { - NSLog(@"Could not post a task to the Flutter engine."); - } - } - } - afterDelay:(targetTime - (double)engine_time) / NSEC_PER_SEC]; + performAfterDelay:(targetTime - (double)engine_time) / NSEC_PER_SEC + block:^{ + FlutterEngine* self = weakSelf; + if (self != nil && self->_engine != nil) { + auto result = _embedderAPI.RunTask(self->_engine, &task); + if (result != kSuccess) { + NSLog(@"Could not post a task to the Flutter engine."); + } + } + }]; } // Getter used by test harness, only exposed through the FlutterEngine(Test) category diff --git a/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterResizeSynchronizer.mm b/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterResizeSynchronizer.mm index 1586932b5df..a3da29192e0 100644 --- a/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterResizeSynchronizer.mm +++ b/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterResizeSynchronizer.mm @@ -45,13 +45,12 @@ if (_inResize) { delay = 0; } - [FlutterRunLoop.mainRunLoop - performBlock:^{ - _didReceiveFrame = YES; - _contentSize = size; - notify(); - } - afterDelay:delay]; + [FlutterRunLoop.mainRunLoop performAfterDelay:delay + block:^{ + _didReceiveFrame = YES; + _contentSize = size; + notify(); + }]; } - (void)shutDown { diff --git a/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterRunLoop.swift b/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterRunLoop.swift index 74cf15667f2..e99a563934e 100644 --- a/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterRunLoop.swift +++ b/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterRunLoop.swift @@ -107,8 +107,7 @@ import Foundation } // Schedules a block to be executed on the main thread. - @objc(performBlock:afterDelay:) - public func perform(block: @escaping () -> Void, afterDelay delay: TimeInterval) { + @objc public func perform(afterDelay delay: TimeInterval, block: @escaping () -> Void) { tasksLock.lock() defer { tasksLock.unlock() } @@ -123,8 +122,8 @@ import Foundation // Schedules a block to be executed on the main thread after a delay. @objc(performBlock:) - public func perform(block: @escaping () -> Void) { - perform(block: block, afterDelay: 0) + public func perform(_ block: @escaping () -> Void) { + perform(afterDelay: 0, block: block) } private func performExpiredTasks() { diff --git a/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterVSyncWaiter.mm b/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterVSyncWaiter.mm index 4e4ebc44967..01fc1eafe87 100644 --- a/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterVSyncWaiter.mm +++ b/engine/src/flutter/shell/platform/darwin/macos/framework/Source/FlutterVSyncWaiter.mm @@ -78,17 +78,17 @@ static const CFTimeInterval kTimerLatencyCompensation = 0.001; TRACE_VSYNC("DisplayLinkCallback-Original", _pendingBaton.value_or(0)); [FlutterRunLoop.mainRunLoop - performBlock:^{ - if (!_pendingBaton.has_value()) { - TRACE_VSYNC("DisplayLinkPaused", size_t(0)); - _displayLink.paused = YES; - return; - } - TRACE_VSYNC("DisplayLinkCallback-Delayed", _pendingBaton.value_or(0)); - _block(minStart, targetTimestamp, *_pendingBaton); - _pendingBaton = std::nullopt; - } - afterDelay:remaining]; + performAfterDelay:remaining + block:^{ + if (!_pendingBaton.has_value()) { + TRACE_VSYNC("DisplayLinkPaused", size_t(0)); + _displayLink.paused = YES; + return; + } + TRACE_VSYNC("DisplayLinkCallback-Delayed", _pendingBaton.value_or(0)); + _block(minStart, targetTimestamp, *_pendingBaton); + _pendingBaton = std::nullopt; + }]; } } @@ -138,13 +138,12 @@ static const CFTimeInterval kTimerLatencyCompensation = 0.001; delay = std::max(start - now - kTimerLatencyCompensation, 0.0); } - [FlutterRunLoop.mainRunLoop - performBlock:^{ - CFTimeInterval targetTimestamp = start + tick_interval; - TRACE_VSYNC("SynthesizedInitialVSync", baton); - _block(start, targetTimestamp, baton); - } - afterDelay:delay]; + [FlutterRunLoop.mainRunLoop performAfterDelay:delay + block:^{ + CFTimeInterval targetTime = start + tick_interval; + TRACE_VSYNC("SynthesizedInitialVSync", baton); + _block(start, targetTime, baton); + }]; _displayLink.paused = NO; } else { _pendingBaton = baton;