From 301b1d84f2d51febc71a367dd143327d77112cbd Mon Sep 17 00:00:00 2001 From: chaviw Date: Wed, 6 Nov 2019 13:15:09 -0800 Subject: Use correct state when calling getZ When calling traverseInZOrder, there's a call to getZ. Currently the code uses the drawingState but that's incorrect since sometimes we traverse the currentState. Changed the getZ function so it uses the correct state. Bug: 143200062 Test: Builds and runs Change-Id: Ifcd9bafbf0906b4f6f8f68f7d20d1a1025cef449 --- services/surfaceflinger/Layer.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'services/surfaceflinger/Layer.cpp') diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index e19b79b7c5..215e240360 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -1540,8 +1540,10 @@ void Layer::setParent(const sp& layer) { mCurrentParent = layer; } -int32_t Layer::getZ() const { - return mDrawingState.z; +int32_t Layer::getZ(LayerVector::StateSet stateSet) const { + const bool useDrawing = stateSet == LayerVector::StateSet::Drawing; + const State& state = useDrawing ? mDrawingState : mCurrentState; + return state.z; } bool Layer::usingRelativeZ(LayerVector::StateSet stateSet) const { @@ -1601,7 +1603,7 @@ void Layer::traverseInZOrder(LayerVector::StateSet stateSet, const LayerVector:: continue; } - if (relative->getZ() >= 0) { + if (relative->getZ(stateSet) >= 0) { break; } relative->traverseInZOrder(stateSet, visitor); @@ -1635,7 +1637,7 @@ void Layer::traverseInReverseZOrder(LayerVector::StateSet stateSet, continue; } - if (relative->getZ() < 0) { + if (relative->getZ(stateSet) < 0) { break; } relative->traverseInReverseZOrder(stateSet, visitor); @@ -1693,7 +1695,7 @@ void Layer::traverseChildrenInZOrderInner(const std::vector& layersInTre size_t i = 0; for (; i < list.size(); i++) { const auto& relative = list[i]; - if (relative->getZ() >= 0) { + if (relative->getZ(stateSet) >= 0) { break; } relative->traverseChildrenInZOrderInner(layersInTree, stateSet, visitor); -- cgit v1.2.3-59-g8ed1b