summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2017-09-21 02:25:28 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-09-21 02:25:28 +0000
commit55f8883bb5b93c6b88350eeb6052a3f145496fdd (patch)
treed6fd810e0c564efccb114f1d574f792524bb2d15
parentd3da6150846550930b823863090559e5f8251659 (diff)
parentd4ca64ef756f255d76b00964e24f24bcbebb56df (diff)
downloadnative-55f8883bb5b93c6b88350eeb6052a3f145496fdd.tar.gz
Merge "libhwc2on1adapter: avoid marking changes if visible regions unchanged" into oc-mr1-dev
-rw-r--r--libs/hwc2on1adapter/HWC2On1Adapter.cpp17
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;
}