[skottie] Clamp OpacityEffect values
Animated opacities can yield values > 1, which trigger RenderContext
asserts.
Clamp explicitly to avoid this issue. Also avoid allocating a new
RenderContext when the value is >= 1 (no op).
TBR=
Change-Id: I1639af7ab50f4ccf9cd79cb950f14b64dd2619ba
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/408256
Reviewed-by: Florin Malita <fmalita@google.com>
Commit-Queue: Florin Malita <fmalita@google.com>
diff --git a/modules/sksg/src/SkSGOpacityEffect.cpp b/modules/sksg/src/SkSGOpacityEffect.cpp
index bb1f94d..513909f6 100644
--- a/modules/sksg/src/SkSGOpacityEffect.cpp
+++ b/modules/sksg/src/SkSGOpacityEffect.cpp
@@ -18,6 +18,12 @@
if (fOpacity <= 0)
return;
+ // opacity >= 1 has no effect
+ if (fOpacity >= 1) {
+ this->INHERITED::onRender(canvas, ctx);
+ return;
+ }
+
const auto local_context = ScopedRenderContext(canvas, ctx).modulateOpacity(fOpacity);
this->INHERITED::onRender(canvas, local_context);