diff --git a/flow/layers/opacity_layer.cc b/flow/layers/opacity_layer.cc index 436a88594a807c8697ec90fba96a80019ec50d33..99c705d8d5440953d910144b1e49f0506aebf449 100644 --- a/flow/layers/opacity_layer.cc +++ b/flow/layers/opacity_layer.cc @@ -20,6 +20,13 @@ void OpacityLayer::EnsureSingleChild() { } auto new_child = std::make_shared(); + + // Be careful: SkMatrix's default constructor doesn't initialize the matrix to + // identity. Hence we have to explicitly call SkMatrix::setIdentity. + SkMatrix identity; + identity.setIdentity(); + + new_child->set_transform(identity); for (auto& child : layers()) { new_child->Add(child); } diff --git a/flow/layers/transform_layer.h b/flow/layers/transform_layer.h index b1fb830bf2b9dda0840c56468277144f77631993..ea5250662b361273060c19c330964ce3923945f4 100644 --- a/flow/layers/transform_layer.h +++ b/flow/layers/transform_layer.h @@ -9,6 +9,8 @@ namespace flow { +// Be careful that SkMatrix's default constructor doesn't initialize the matrix +// at all. Hence |set_transform| must be called with an initialized SkMatrix. class TransformLayer : public ContainerLayer { public: TransformLayer();