diff options
author | 2012-05-31 18:28:59 +0000 | |
---|---|---|
committer | 2012-05-31 18:28:59 +0000 | |
commit | 0d10280190c411b18feb569a2248552047d1aa93 (patch) | |
tree | 4590a03f96903de021699869f91a26d7779d2a4b /src/core/SkRegion.cpp | |
parent | 6f6efa90c48a8c8f0052f65b54cdeeaad67fea44 (diff) |
We often rgn-diff an area >= the other rgn. now we detect that and return empty
We do this when we update our devices in SkCanvas.cpp
Review URL: https://codereview.appspot.com/6249073
git-svn-id: http://skia.googlecode.com/svn/trunk@4101 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkRegion.cpp')
-rw-r--r-- | src/core/SkRegion.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/core/SkRegion.cpp b/src/core/SkRegion.cpp index cb370cacc0..fac948db14 100644 --- a/src/core/SkRegion.cpp +++ b/src/core/SkRegion.cpp @@ -992,9 +992,13 @@ bool SkRegion::Oper(const SkRegion& rgnaOrig, const SkRegion& rgnbOrig, Op op, if (a_empty) { return setEmptyCheck(result); } - if (b_empty || !SkIRect::Intersects(rgna->fBounds, rgnb->fBounds)) { + if (b_empty || !SkIRect::IntersectsNoEmptyCheck(rgna->fBounds, + rgnb->fBounds)) { return setRegionCheck(result, *rgna); } + if (b_rect && rgnb->fBounds.containsNoEmptyCheck(rgna->fBounds)) { + return setEmptyCheck(result); + } break; case kIntersect_Op: |