diff options
author | Romain Guy <romainguy@google.com> | 2010-08-11 19:35:53 -0700 |
---|---|---|
committer | Romain Guy <romainguy@google.com> | 2010-08-11 19:35:53 -0700 |
commit | 959c91f7f7b4f921d341264f5b4ef54e702a0df0 (patch) | |
tree | 0b6e7264bf5680cb2dea83cf587449fde9802034 /libs/hwui/Snapshot.h | |
parent | 943fbb4f4006273ae5983da42143d721ae05dfd4 (diff) | |
download | frameworks_base-959c91f7f7b4f921d341264f5b4ef54e702a0df0.zip frameworks_base-959c91f7f7b4f921d341264f5b4ef54e702a0df0.tar.gz frameworks_base-959c91f7f7b4f921d341264f5b4ef54e702a0df0.tar.bz2 |
Bunch of fixes.
Fixes memory leak, fixes multiple context support, fix 3d transforms.
Change-Id: I7462cfbc57857dbd4de4e76b9d4cba58a1bce77b
Diffstat (limited to 'libs/hwui/Snapshot.h')
-rw-r--r-- | libs/hwui/Snapshot.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/libs/hwui/Snapshot.h b/libs/hwui/Snapshot.h index 399ae68..342e5b1 100644 --- a/libs/hwui/Snapshot.h +++ b/libs/hwui/Snapshot.h @@ -96,9 +96,14 @@ public: bool clip(float left, float top, float right, float bottom, SkRegion::Op op) { bool clipped = false; - Rect r(left, top, right, bottom); - transform.mapRect(r); + SkRect sr; + sr.set(left, top, right, bottom); + SkMatrix m; + transform.copyTo(m); + m.mapRect(&sr); + + Rect r(sr.fLeft, sr.fTop, sr.fRight, sr.fBottom); switch (op) { case SkRegion::kDifference_Op: break; @@ -137,8 +142,16 @@ public: if (flags & Snapshot::kFlagDirtyLocalClip) { mat4 inverse; inverse.loadInverse(transform); - localClip.set(clipRect); - inverse.mapRect(localClip); + + SkRect sr; + sr.set(clipRect.left, clipRect.top, clipRect.right, clipRect.bottom); + + SkMatrix m; + inverse.copyTo(m); + m.mapRect(&sr); + + localClip.set(sr.fLeft, sr.fTop, sr.fRight, sr.fBottom); + flags &= ~Snapshot::kFlagDirtyLocalClip; } return localClip; |