diff options
author | Dan Stoza <stoza@google.com> | 2015-03-17 16:23:42 -0700 |
---|---|---|
committer | Dan Stoza <stoza@google.com> | 2015-04-15 13:19:38 -0700 |
commit | 5065a55291b67f584d7b0be3fa3cfc4e29a3cd1c (patch) | |
tree | c0d4972cfc939f852cc67ea5802fe81863332954 /libs/ui | |
parent | 4d769d8bdc2fd57d34ab0fa4b9208ac0eb67cd61 (diff) | |
download | frameworks_native-5065a55291b67f584d7b0be3fa3cfc4e29a3cd1c.zip frameworks_native-5065a55291b67f584d7b0be3fa3cfc4e29a3cd1c.tar.gz frameworks_native-5065a55291b67f584d7b0be3fa3cfc4e29a3cd1c.tar.bz2 |
libgui: Pass surface damage through BufferQueue
This change adds support for passing surface damage all of the way
down from the EGL interface through the consumer side of the
BufferQueue. Depends on system/core change
Ie645e6a52b37b5c1b3be19481e8348570d1aa62c
Bug: 11239309
Change-Id: I4457ea826e9ade4ec187f973851d855b7b93a31b
Diffstat (limited to 'libs/ui')
-rw-r--r-- | libs/ui/Rect.cpp | 2 | ||||
-rw-r--r-- | libs/ui/Region.cpp | 14 |
2 files changed, 13 insertions, 3 deletions
diff --git a/libs/ui/Rect.cpp b/libs/ui/Rect.cpp index b480f3a..dcce21f 100644 --- a/libs/ui/Rect.cpp +++ b/libs/ui/Rect.cpp @@ -19,6 +19,8 @@ namespace android { +const Rect Rect::INVALID_RECT{0, 0, -1, -1}; + static inline int32_t min(int32_t a, int32_t b) { return (a < b) ? a : b; } diff --git a/libs/ui/Region.cpp b/libs/ui/Region.cpp index 62ec35c..3810da4 100644 --- a/libs/ui/Region.cpp +++ b/libs/ui/Region.cpp @@ -53,6 +53,8 @@ enum { direction_RTL }; +const Region Region::INVALID_REGION(Rect::INVALID_RECT); + // ---------------------------------------------------------------------------- Region::Region() { @@ -517,8 +519,12 @@ bool Region::validate(const Region& reg, const char* name, bool silent) Rect b(*prev); while (cur != tail) { if (cur->isValid() == false) { - ALOGE_IF(!silent, "%s: region contains an invalid Rect", name); - result = false; + // We allow this particular flavor of invalid Rect, since it is used + // as a signal value in various parts of the system + if (*cur != Rect::INVALID_RECT) { + ALOGE_IF(!silent, "%s: region contains an invalid Rect", name); + result = false; + } } if (cur->right > region_operator<Rect>::max_value) { ALOGE_IF(!silent, "%s: rect->right > max_value", name); @@ -690,7 +696,9 @@ void Region::boolean_operation(int op, Region& dst, const Region& lhs, const Rect& rhs, int dx, int dy) { - if (!rhs.isValid()) { + // We allow this particular flavor of invalid Rect, since it is used as a + // signal value in various parts of the system + if (!rhs.isValid() && rhs != Rect::INVALID_RECT) { ALOGE("Region::boolean_operation(op=%d) invalid Rect={%d,%d,%d,%d}", op, rhs.left, rhs.top, rhs.right, rhs.bottom); return; |