From 6eab9d08bec12980e4babe3d21f0258701dfee8a Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Mon, 9 Jul 2018 12:52:10 -0700 Subject: [PATCH] Remove cullRect calculation on TransformLayers with a perspective transform. (flutter/engine#5693) --- engine/src/flutter/flow/layers/default_layer_builder.cc | 5 +++-- .../darwin/ios/framework/Source/FlutterAppDelegate.mm | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/engine/src/flutter/flow/layers/default_layer_builder.cc b/engine/src/flutter/flow/layers/default_layer_builder.cc index ca228a7d58f..fb2280b27ed 100644 --- a/engine/src/flutter/flow/layers/default_layer_builder.cc +++ b/engine/src/flutter/flow/layers/default_layer_builder.cc @@ -37,12 +37,13 @@ DefaultLayerBuilder::~DefaultLayerBuilder() = default; void DefaultLayerBuilder::PushTransform(const SkMatrix& sk_matrix) { SkMatrix inverse_sk_matrix; SkRect cullRect; - if (sk_matrix.invert(&inverse_sk_matrix)) { + // Perspective projections don't produce rectangles that are useful for + // culling for some reason. + if (!sk_matrix.hasPerspective() && sk_matrix.invert(&inverse_sk_matrix)) { inverse_sk_matrix.mapRect(&cullRect, cull_rects_.top()); } else { cullRect = kGiantRect; } - auto layer = std::make_unique(); layer->set_transform(sk_matrix); PushLayer(std::move(layer), cullRect); diff --git a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm index a544d516c81..efdabb7f6b2 100644 --- a/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm +++ b/engine/src/flutter/shell/platform/darwin/ios/framework/Source/FlutterAppDelegate.mm @@ -129,7 +129,7 @@ - (BOOL)application:(UIApplication*)application continueUserActivity:(NSUserActivity*)userActivity - restorationHandler:(void (^)(NSArray*))restorationHandler { + restorationHandler:(void (^)(NSArray>*))restorationHandler { return [_lifeCycleDelegate application:application continueUserActivity:userActivity restorationHandler:restorationHandler];