From eb89d9d42ca3245e0cfca800637f81fbf83d008e Mon Sep 17 00:00:00 2001 From: liyuqian Date: Mon, 8 Jul 2019 15:02:18 -0700 Subject: [PATCH] Explain why OpacityLayer has an offset field (#9713) According to the request by Amir and Chris. --- flow/layers/opacity_layer.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/flow/layers/opacity_layer.h b/flow/layers/opacity_layer.h index 9e9555ffec5..795d8841ba6 100644 --- a/flow/layers/opacity_layer.h +++ b/flow/layers/opacity_layer.h @@ -15,6 +15,16 @@ namespace flutter { // |EnsureSingleChild| will assert if there are no children. class OpacityLayer : public ContainerLayer { public: + // An offset is provided here because OpacityLayer.addToScene method in the + // Flutter framework can take an optional offset argument. + // + // By default, that offset is always zero, and all the offsets are handled by + // some parent TransformLayers. But we allow the offset to be non-zero for + // backward compatibility. If it's non-zero, the old behavior is to propage + // that offset to all the leaf layers (e.g., PictureLayer). That will make + // the retained rendering inefficient as a small offset change could propagate + // to many leaf layers. Therefore we try to capture that offset here to stop + // the propagation as repainting the OpacityLayer is expensive. OpacityLayer(int alpha, const SkPoint& offset); ~OpacityLayer() override;