| Index: skia/ext/analysis_canvas.cc
|
| diff --git a/skia/ext/analysis_canvas.cc b/skia/ext/analysis_canvas.cc
|
| index 2caa73d00dd2cbad35493532d6de1b9ade8cd84d..b5d1e9830e458416a101c49c4b2c09a07ed4b44f 100644
|
| --- a/skia/ext/analysis_canvas.cc
|
| +++ b/skia/ext/analysis_canvas.cc
|
| @@ -54,7 +54,7 @@ bool IsFullQuad(SkCanvas* canvas, const SkRect& drawn_rect) {
|
| SkIRect clip_irect;
|
| if (!canvas->getClipDeviceBounds(&clip_irect))
|
| return false;
|
| -
|
| +
|
| // if the clip is smaller than the canvas, we're partly clipped, so abort.
|
| if (!clip_irect.contains(SkIRect::MakeSize(canvas->getBaseLayerSize())))
|
| return false;
|
| @@ -113,6 +113,7 @@ void AnalysisCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) {
|
| quickReject(paint.computeFastBounds(rect, &scratch))) {
|
| TRACE_EVENT_INSTANT0("disabled-by-default-skia", "Quick reject.",
|
| TRACE_EVENT_SCOPE_THREAD);
|
| + ++rejected_op_count_;
|
| return;
|
| }
|
|
|
| @@ -349,7 +350,8 @@ AnalysisCanvas::AnalysisCanvas(int width, int height)
|
| is_solid_color_(true),
|
| color_(SK_ColorTRANSPARENT),
|
| is_transparent_(true),
|
| - draw_op_count_(0) {
|
| + draw_op_count_(0),
|
| + rejected_op_count_(0) {
|
| }
|
|
|
| AnalysisCanvas::~AnalysisCanvas() {}
|
| @@ -367,11 +369,11 @@ bool AnalysisCanvas::GetColorIfSolid(SkColor* color) const {
|
| }
|
|
|
| bool AnalysisCanvas::abort() {
|
| - // Early out as soon as we have more than one draw op.
|
| - // TODO(vmpstr): Investigate if 1 is the correct metric here. We need to
|
| - // balance the amount of time we spend analyzing vs how many tiles would be
|
| - // solid if the number was higher.
|
| - if (draw_op_count_ > 1) {
|
| + // Early out as soon as we have more than 1 draw op or 5 rejected ops.
|
| + // TODO(vmpstr): Investigate if 1 and 5 are the correct metrics here. We need
|
| + // to balance the amount of time we spend analyzing vs how many tiles would be
|
| + // solid if the numbers were higher.
|
| + if (draw_op_count_ > 1 || rejected_op_count_ > 5) {
|
| TRACE_EVENT0("disabled-by-default-skia",
|
| "AnalysisCanvas::abort() -- aborting");
|
| // We have to reset solid/transparent state to false since we don't
|
|
|