Allow GrShadowRRectOp::Make to fail
Change-Id: Ia325c711143c76db27b7dd9dd02ea8bea13f2806
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/209100
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
diff --git a/src/gpu/GrRenderTargetContext.cpp b/src/gpu/GrRenderTargetContext.cpp
index 224fc36..0bc18c2 100644
--- a/src/gpu/GrRenderTargetContext.cpp
+++ b/src/gpu/GrRenderTargetContext.cpp
@@ -1353,8 +1353,9 @@
ambientRRect,
devSpaceAmbientBlur,
devSpaceInsetWidth);
- SkASSERT(op);
- this->addDrawOp(clip, std::move(op));
+ if (op) {
+ this->addDrawOp(clip, std::move(op));
+ }
}
if (SkColorGetA(rec.fSpotColor) > 0) {
@@ -1450,8 +1451,9 @@
spotShadowRRect,
2.0f * devSpaceSpotBlur,
insetWidth);
- SkASSERT(op);
- this->addDrawOp(clip, std::move(op));
+ if (op) {
+ this->addDrawOp(clip, std::move(op));
+ }
}
return true;
diff --git a/src/gpu/ops/GrShadowRRectOp.cpp b/src/gpu/ops/GrShadowRRectOp.cpp
index 5ee0b37..50ac40f 100644
--- a/src/gpu/ops/GrShadowRRectOp.cpp
+++ b/src/gpu/ops/GrShadowRRectOp.cpp
@@ -642,6 +642,10 @@
SkScalar scaledRadius = SkScalarAbs(radius*matrixFactor);
SkScalar scaledInsetWidth = SkScalarAbs(insetWidth*matrixFactor);
+ if (scaledInsetWidth <= 0) {
+ return nullptr;
+ }
+
GrOpMemoryPool* pool = context->priv().opMemoryPool();
return pool->allocate<ShadowCircularRRectOp>(color, bounds,