Index: skia/ext/analysis_canvas.cc |
diff --git a/skia/ext/analysis_canvas.cc b/skia/ext/analysis_canvas.cc |
index 0af76f276cb4be0b472b273117e28c8e960aa10a..74cd9f147c37a6c0775d9bfccc756c95a4a4d4ce 100644 |
--- a/skia/ext/analysis_canvas.cc |
+++ b/skia/ext/analysis_canvas.cc |
@@ -202,7 +202,8 @@ void AnalysisDevice::drawPaint(const SkDraw&, const SkPaint& paint) { |
estimatedCost_ += kUnknownBitmapCost; |
addBitmapFromPaint(paint); |
} |
- isSolidColor_ = false; |
+ isSolidColor_ = |
+ (isSolidColor_ && isSolidColorPaint(paint) && paint.getColor() == color_); |
isTransparent_ = false; |
} |
@@ -263,9 +264,12 @@ void AnalysisDevice::drawRect(const SkDraw& draw, const SkRect& rect, |
// - We're not in "forced not solid" mode |
// - Paint is solid color |
// - The quad is a full tile quad |
+ // - The exception is if the tile is already solid tile, |
+ // and we're drawing the same solid color paint then |
+ // the tile remains solid. |
if (!isForcedNotSolid_ && |
isSolidColorPaint(paint) && |
- doesCoverCanvas) { |
+ (doesCoverCanvas || (isSolidColor_ && paint.getColor() == color_))) { |
isSolidColor_ = true; |
color_ = paint.getColor(); |
hasText_ = false; |