Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 7fcab77

Browse files
committed
Review edits
1 parent 02ffec5 commit 7fcab77

File tree

4 files changed

+24
-28
lines changed

4 files changed

+24
-28
lines changed

shell/platform/darwin/ios/framework/Source/FlutterMetalLayer.mm

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ - (instancetype)init {
176176
_availableTextures = [[NSMutableSet alloc] init];
177177

178178
_displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(onDisplayLink:)];
179-
[self setMaxRefreshRate:[DisplayLinkManager displayRefreshRate] forceMax:NO];
179+
[self setMaxRefreshRate:DisplayLinkManager.displayRefreshRate forceMax:NO];
180180
[_displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
181181
[[NSNotificationCenter defaultCenter] addObserver:self
182182
selector:@selector(didEnterBackground:)
@@ -214,7 +214,7 @@ - (void)onDisplayLink:(CADisplayLink*)link {
214214
if (_displayLinkPauseCountdown == 3) {
215215
_displayLink.paused = YES;
216216
if (_displayLinkForcedMaxRate) {
217-
[self setMaxRefreshRate:[DisplayLinkManager displayRefreshRate] forceMax:NO];
217+
[self setMaxRefreshRate:DisplayLinkManager.displayRefreshRate forceMax:NO];
218218
_displayLinkForcedMaxRate = NO;
219219
}
220220
} else {
@@ -395,7 +395,7 @@ - (void)presentOnMainThread:(FlutterTexture*)texture {
395395
_didSetContentsDuringThisDisplayLinkPeriod = YES;
396396
} else if (!_displayLinkForcedMaxRate) {
397397
_displayLinkForcedMaxRate = YES;
398-
[self setMaxRefreshRate:[DisplayLinkManager displayRefreshRate] forceMax:YES];
398+
[self setMaxRefreshRate:DisplayLinkManager.displayRefreshRate forceMax:YES];
399399
}
400400
}
401401

shell/platform/darwin/ios/framework/Source/FlutterViewController.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1321,7 +1321,7 @@ - (void)createTouchRateCorrectionVSyncClientIfNeeded {
13211321
return;
13221322
}
13231323

1324-
double displayRefreshRate = [DisplayLinkManager displayRefreshRate];
1324+
double displayRefreshRate = DisplayLinkManager.displayRefreshRate;
13251325
const double epsilon = 0.1;
13261326
if (displayRefreshRate < 60.0 + epsilon) { // displayRefreshRate <= 60.0
13271327

shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
///
3030
/// @return The refresh rate in frames per second.
3131
///
32-
+ (double)displayRefreshRate;
32+
@property(class, nonatomic, readonly) double displayRefreshRate;
3333

3434
@end
3535

@@ -52,10 +52,11 @@
5252

5353
- (void)pause;
5454

55+
//------------------------------------------------------------------------------
56+
/// @brief Call invalidate before releasing this object to remove from runloops.
57+
///
5558
- (void)invalidate;
5659

57-
- (double)getRefreshRate;
58-
5960
- (void)setMaxRefreshRate:(double)refreshRate;
6061

6162
@end

shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
#include "flutter/fml/memory/task_runner_checker.h"
1616
#include "flutter/fml/trace_event.h"
1717

18+
@interface VSyncClient ()
19+
@property(nonatomic, assign, readonly) double refreshRate;
20+
@end
21+
1822
// When calculating refresh rate diffrence, anything within 0.1 fps is ignored.
1923
const static double kRefreshRateDiffToIgnore = 0.1;
2024

@@ -29,7 +33,7 @@
2933
};
3034
client_ = [[VSyncClient alloc] initWithTaskRunner:task_runners_.GetUITaskRunner()
3135
callback:callback];
32-
max_refresh_rate_ = [DisplayLinkManager displayRefreshRate];
36+
max_refresh_rate_ = DisplayLinkManager.displayRefreshRate;
3337
}
3438

3539
VsyncWaiterIOS::~VsyncWaiterIOS() {
@@ -39,7 +43,7 @@
3943
}
4044

4145
void VsyncWaiterIOS::AwaitVSync() {
42-
double new_max_refresh_rate = [DisplayLinkManager displayRefreshRate];
46+
double new_max_refresh_rate = DisplayLinkManager.displayRefreshRate;
4347
if (fabs(new_max_refresh_rate - max_refresh_rate_) > kRefreshRateDiffToIgnore) {
4448
max_refresh_rate_ = new_max_refresh_rate;
4549
[client_ setMaxRefreshRate:max_refresh_rate_];
@@ -49,34 +53,33 @@
4953

5054
// |VariableRefreshRateReporter|
5155
double VsyncWaiterIOS::GetRefreshRate() const {
52-
return [client_ getRefreshRate];
56+
return client_.refreshRate;
5357
}
5458

5559
} // namespace flutter
5660

5761
@implementation VSyncClient {
58-
flutter::VsyncWaiter::Callback callback_;
62+
flutter::VsyncWaiter::Callback _callback;
5963
CADisplayLink* _displayLink;
60-
double current_refresh_rate_;
6164
}
6265

6366
- (instancetype)initWithTaskRunner:(fml::RefPtr<fml::TaskRunner>)task_runner
6467
callback:(flutter::VsyncWaiter::Callback)callback {
6568
self = [super init];
6669

6770
if (self) {
68-
current_refresh_rate_ = [DisplayLinkManager displayRefreshRate];
71+
_refreshRate = DisplayLinkManager.displayRefreshRate;
6972
_allowPauseAfterVsync = YES;
70-
callback_ = std::move(callback);
73+
_callback = std::move(callback);
7174
_displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(onDisplayLink:)];
7275
_displayLink.paused = YES;
7376

74-
[self setMaxRefreshRate:[DisplayLinkManager displayRefreshRate]];
77+
[self setMaxRefreshRate:DisplayLinkManager.displayRefreshRate];
7578

7679
// Strongly retain the the captured link until it is added to the runloop.
7780
CADisplayLink* localDisplayLink = _displayLink;
7881
task_runner->PostTask([localDisplayLink]() {
79-
[localDisplayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
82+
[localDisplayLink addToRunLoop:NSRunLoop.currentRunLoop forMode:NSRunLoopCommonModes];
8083
});
8184
}
8285

@@ -119,28 +122,20 @@ - (void)onDisplayLink:(CADisplayLink*)link {
119122
std::unique_ptr<flutter::FrameTimingsRecorder> recorder =
120123
std::make_unique<flutter::FrameTimingsRecorder>();
121124

122-
current_refresh_rate_ = round(1 / (frame_target_time - frame_start_time).ToSecondsF());
125+
_refreshRate = round(1 / (frame_target_time - frame_start_time).ToSecondsF());
123126

124127
recorder->RecordVsync(frame_start_time, frame_target_time);
125128
if (_allowPauseAfterVsync) {
126129
link.paused = YES;
127130
}
128-
callback_(std::move(recorder));
131+
_callback(std::move(recorder));
129132
}
130133

131134
- (void)invalidate {
132135
[_displayLink invalidate];
133136
_displayLink = nil; // Break retain cycle.
134137
}
135138

136-
- (void)dealloc {
137-
[_displayLink invalidate];
138-
}
139-
140-
- (double)getRefreshRate {
141-
return current_refresh_rate_;
142-
}
143-
144139
- (CADisplayLink*)getDisplayLink {
145140
return _displayLink;
146141
}
@@ -164,15 +159,15 @@ + (double)displayRefreshRate {
164159
return preferredFPS;
165160
}
166161

167-
return [UIScreen mainScreen].maximumFramesPerSecond;
162+
return UIScreen.mainScreen.maximumFramesPerSecond;
168163
}
169164

170165
- (void)onDisplayLink:(CADisplayLink*)link {
171166
// no-op.
172167
}
173168

174169
+ (BOOL)maxRefreshRateEnabledOnIPhone {
175-
return [[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CADisableMinimumFrameDurationOnPhone"]
170+
return [[NSBundle.mainBundle objectForInfoDictionaryKey:@"CADisableMinimumFrameDurationOnPhone"]
176171
boolValue];
177172
}
178173

0 commit comments

Comments
 (0)