From 8432808ad8898ac7137bc7ce1d9df6005e866401 Mon Sep 17 00:00:00 2001 From: reed Date: Tue, 10 Feb 2015 14:18:09 -0800 Subject: check for inverted rects before we quick-reject BUG=skia: Review URL: https://codereview.chromium.org/908353002 --- src/core/SkCanvas.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/core/SkCanvas.cpp') diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index ce99546728..c523ca07dd 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -1776,7 +1776,12 @@ void SkCanvas::onDrawRect(const SkRect& r, const SkPaint& paint) { SkRect storage; const SkRect* bounds = NULL; if (paint.canComputeFastBounds()) { - bounds = &paint.computeFastBounds(r, &storage); + // Skia will draw an inverted rect, because it explicitly "sorts" it downstream. + // To prevent accidental rejecting at this stage, we have to sort it before we check. + SkRect tmp(r); + tmp.sort(); + + bounds = &paint.computeFastBounds(tmp, &storage); if (this->quickReject(*bounds)) { return; } -- cgit v1.2.3