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:
reed 2016-09-06 10:16:47 -07:00 committed by Commit bot
parent 47ae5c5d8f
commit 6669010af4

View File

@ -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;
}