aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkCanvas.cpp
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2015-02-10 14:18:09 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-02-10 14:18:09 -0800
commit8432808ad8898ac7137bc7ce1d9df6005e866401 (patch)
tree8708483fc887230a4e73f5c145e0c76277662875 /src/core/SkCanvas.cpp
parentbfd5bff75c0ce27a70f02e4b5578d66aa9d6e306 (diff)
check for inverted rects before we quick-reject
Diffstat (limited to 'src/core/SkCanvas.cpp')
-rw-r--r--src/core/SkCanvas.cpp7
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;
}