From e2c1fa073202c4308bc8e66ec96d1b07678a3a75 Mon Sep 17 00:00:00 2001 From: luckysmg <2539699336@qq.com> Date: Sat, 4 Feb 2023 08:49:03 +0800 Subject: [PATCH] [iOS] Ensure FlutterView's background color is not nil to avoid CAMetalLayer nextDrawable being time-consuming --- shell/platform/darwin/ios/framework/Source/FlutterView.mm | 6 ++++++ .../platform/darwin/ios/framework/Source/FlutterViewTest.mm | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/shell/platform/darwin/ios/framework/Source/FlutterView.mm b/shell/platform/darwin/ios/framework/Source/FlutterView.mm index 7c188be87109d..dcab55d404c34 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterView.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterView.mm @@ -47,6 +47,12 @@ - (instancetype)initWithDelegate:(id)delegate opaque: if (self) { _delegate = delegate; self.layer.opaque = opaque; + + // This line is necessary. CoreAnimation(or UIKit) may take this to do + // something to compute the final frame presented on screen, if we don't set this, + // it will make it take long time for us to take next CAMetalDrawable and will + // cause constant junk during rendering. + self.backgroundColor = UIColor.clearColor; } return self; diff --git a/shell/platform/darwin/ios/framework/Source/FlutterViewTest.mm b/shell/platform/darwin/ios/framework/Source/FlutterViewTest.mm index c14bee16a6104..d264933b0bf43 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterViewTest.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterViewTest.mm @@ -49,4 +49,10 @@ - (void)testFlutterViewEnableSemanticsWhenIsAccessibilityElementIsCalled { XCTAssertTrue(delegate.callbackCalled); } +- (void)testFlutterViewBackgroundColorIsNotNil { + FakeDelegate* delegate = [[FakeDelegate alloc] init]; + FlutterView* view = [[FlutterView alloc] initWithDelegate:delegate opaque:NO]; + XCTAssertNotNil(view.backgroundColor); +} + @end