diff options
author | 2015-02-10 14:18:09 -0800 | |
---|---|---|
committer | 2015-02-10 14:18:09 -0800 | |
commit | 8432808ad8898ac7137bc7ce1d9df6005e866401 (patch) | |
tree | 8708483fc887230a4e73f5c145e0c76277662875 /src/core/SkCanvas.cpp | |
parent | bfd5bff75c0ce27a70f02e4b5578d66aa9d6e306 (diff) |
check for inverted rects before we quick-reject
BUG=skia:
Review URL: https://codereview.chromium.org/908353002
Diffstat (limited to 'src/core/SkCanvas.cpp')
-rw-r--r-- | src/core/SkCanvas.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
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; } |