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