Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 301b1d84 authored by chaviw's avatar chaviw
Browse files

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
parent 0be01b4e
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -1540,8 +1540,10 @@ void Layer::setParent(const sp<Layer>& 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<Layer*>& 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);
+1 −1
Original line number Diff line number Diff line
@@ -672,7 +672,7 @@ public:
    // Copy the current list of children to the drawing state. Called by
    // SurfaceFlinger to complete a transaction.
    void commitChildList();
    int32_t getZ() const;
    int32_t getZ(LayerVector::StateSet stateSet) const;
    virtual void pushPendingState();

    /**