diff options
| -rw-r--r-- | services/surfaceflinger/DisplayHardware/HWC2.cpp | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.cpp b/services/surfaceflinger/DisplayHardware/HWC2.cpp index 715d9fd3ce..22479d81a7 100644 --- a/services/surfaceflinger/DisplayHardware/HWC2.cpp +++ b/services/surfaceflinger/DisplayHardware/HWC2.cpp @@ -583,6 +583,21 @@ std::shared_ptr<HWC2::Layer> Display::getLayerById(HWLayerId id) const { // Layer methods +namespace { +std::vector<Hwc2::IComposerClient::Rect> convertRegionToHwcRects(const Region& region) { + size_t rectCount = 0; + Rect const* rectArray = region.getArray(&rectCount); + + std::vector<Hwc2::IComposerClient::Rect> hwcRects; + hwcRects.reserve(rectCount); + for (size_t rect = 0; rect < rectCount; ++rect) { + hwcRects.push_back({rectArray[rect].left, rectArray[rect].top, rectArray[rect].right, + rectArray[rect].bottom}); + } + return hwcRects; +} +} // namespace + Layer::~Layer() = default; namespace impl { @@ -673,15 +688,7 @@ Error Layer::setSurfaceDamage(const Region& damage) intError = mComposer.setLayerSurfaceDamage(mDisplay->getId(), mId, std::vector<Hwc2::IComposerClient::Rect>()); } else { - size_t rectCount = 0; - auto rectArray = damage.getArray(&rectCount); - - std::vector<Hwc2::IComposerClient::Rect> hwcRects; - for (size_t rect = 0; rect < rectCount; ++rect) { - hwcRects.push_back({rectArray[rect].left, rectArray[rect].top, - rectArray[rect].right, rectArray[rect].bottom}); - } - + const auto hwcRects = convertRegionToHwcRects(damage); intError = mComposer.setLayerSurfaceDamage(mDisplay->getId(), mId, hwcRects); } @@ -869,16 +876,7 @@ Error Layer::setVisibleRegion(const Region& region) return Error::NONE; } mVisibleRegion = region; - - size_t rectCount = 0; - auto rectArray = region.getArray(&rectCount); - - std::vector<Hwc2::IComposerClient::Rect> hwcRects; - for (size_t rect = 0; rect < rectCount; ++rect) { - hwcRects.push_back({rectArray[rect].left, rectArray[rect].top, - rectArray[rect].right, rectArray[rect].bottom}); - } - + const auto hwcRects = convertRegionToHwcRects(region); auto intError = mComposer.setLayerVisibleRegion(mDisplay->getId(), mId, hwcRects); return static_cast<Error>(intError); } |