diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2017-09-21 02:25:28 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-09-21 02:25:28 +0000 |
commit | 55f8883bb5b93c6b88350eeb6052a3f145496fdd (patch) | |
tree | d6fd810e0c564efccb114f1d574f792524bb2d15 | |
parent | d3da6150846550930b823863090559e5f8251659 (diff) | |
parent | d4ca64ef756f255d76b00964e24f24bcbebb56df (diff) | |
download | native-55f8883bb5b93c6b88350eeb6052a3f145496fdd.tar.gz |
Merge "libhwc2on1adapter: avoid marking changes if visible regions unchanged" into oc-mr1-dev
-rw-r--r-- | libs/hwc2on1adapter/HWC2On1Adapter.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/libs/hwc2on1adapter/HWC2On1Adapter.cpp b/libs/hwc2on1adapter/HWC2On1Adapter.cpp index 8c6ef691a2..e1b9a8a6f1 100644 --- a/libs/hwc2on1adapter/HWC2On1Adapter.cpp +++ b/libs/hwc2on1adapter/HWC2On1Adapter.cpp @@ -2005,10 +2005,21 @@ Error HWC2On1Adapter::Layer::setTransform(Transform transform) { return Error::None; } +static bool compareRects(const hwc_rect_t& rect1, const hwc_rect_t& rect2) { + return rect1.left == rect2.left && + rect1.right == rect2.right && + rect1.top == rect2.top && + rect1.bottom == rect2.bottom; +} + Error HWC2On1Adapter::Layer::setVisibleRegion(hwc_region_t visible) { - mVisibleRegion.resize(visible.numRects); - std::copy_n(visible.rects, visible.numRects, mVisibleRegion.begin()); - mDisplay.markGeometryChanged(); + if ((getNumVisibleRegions() != visible.numRects) || + !std::equal(mVisibleRegion.begin(), mVisibleRegion.end(), visible.rects, + compareRects)) { + mVisibleRegion.resize(visible.numRects); + std::copy_n(visible.rects, visible.numRects, mVisibleRegion.begin()); + mDisplay.markGeometryChanged(); + } return Error::None; } |