check for null-layer-paint after prev fix to savelayer ops
BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2314073002 Review-Url: https://codereview.chromium.org/2314073002
This commit is contained in:
parent
47ae5c5d8f
commit
6669010af4
@ -87,7 +87,7 @@ struct SaveOnlyDrawsRestoreNooper {
|
||||
}
|
||||
};
|
||||
|
||||
static bool fold_opacity_layer_color_to_paint(const SkPaint& layerPaint,
|
||||
static bool fold_opacity_layer_color_to_paint(const SkPaint* layerPaint,
|
||||
bool isSaveLayer,
|
||||
SkPaint* paint) {
|
||||
// We assume layerPaint is always from a saveLayer. If isSaveLayer is
|
||||
@ -121,26 +121,27 @@ static bool fold_opacity_layer_color_to_paint(const SkPaint& layerPaint,
|
||||
return false;
|
||||
}
|
||||
|
||||
const uint32_t layerColor = layerPaint.getColor();
|
||||
// The layer paint color must have only alpha component.
|
||||
if (SK_ColorTRANSPARENT != SkColorSetA(layerColor, SK_AlphaTRANSPARENT)) {
|
||||
return false;
|
||||
}
|
||||
if (layerPaint) {
|
||||
const uint32_t layerColor = layerPaint->getColor();
|
||||
// The layer paint color must have only alpha component.
|
||||
if (SK_ColorTRANSPARENT != SkColorSetA(layerColor, SK_AlphaTRANSPARENT)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// The layer paint can not have any effects.
|
||||
if (layerPaint.getPathEffect() ||
|
||||
layerPaint.getShader() ||
|
||||
layerPaint.getXfermode() ||
|
||||
layerPaint.getMaskFilter() ||
|
||||
layerPaint.getColorFilter() ||
|
||||
layerPaint.getRasterizer() ||
|
||||
layerPaint.getLooper() ||
|
||||
layerPaint.getImageFilter()) {
|
||||
return false;
|
||||
// The layer paint can not have any effects.
|
||||
if (layerPaint->getPathEffect() ||
|
||||
layerPaint->getShader() ||
|
||||
layerPaint->getXfermode() ||
|
||||
layerPaint->getMaskFilter() ||
|
||||
layerPaint->getColorFilter() ||
|
||||
layerPaint->getRasterizer() ||
|
||||
layerPaint->getLooper() ||
|
||||
layerPaint->getImageFilter()) {
|
||||
return false;
|
||||
}
|
||||
paint->setAlpha(SkMulDiv255Round(paint->getAlpha(), SkColorGetA(layerColor)));
|
||||
}
|
||||
|
||||
paint->setAlpha(SkMulDiv255Round(paint->getAlpha(), SkColorGetA(layerColor)));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -211,7 +212,7 @@ struct SaveLayerDrawRestoreNooper {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!fold_opacity_layer_color_to_paint(*layerPaint, false /*isSaveLayer*/, drawPaint)) {
|
||||
if (!fold_opacity_layer_color_to_paint(layerPaint, false /*isSaveLayer*/, drawPaint)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -264,7 +265,7 @@ struct SvgOpacityAndFilterLayerMergePass {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!fold_opacity_layer_color_to_paint(*opacityPaint, true /*isSaveLayer*/,
|
||||
if (!fold_opacity_layer_color_to_paint(opacityPaint, true /*isSaveLayer*/,
|
||||
filterLayerPaint)) {
|
||||
return false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user