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

Commit edcc0c28 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "SurfaceFlinger: Fix destruction of relatively Z-ordered layers." into oc-dev

parents 961c83c8 5edb1add
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -287,6 +287,14 @@ void Layer::onSidebandStreamChanged() {
// the layer has been remove from the current state list (and just before
// it's removed from the drawing state list)
void Layer::onRemoved() {
    if (mCurrentState.zOrderRelativeOf != nullptr) {
        sp<Layer> strongRelative = mCurrentState.zOrderRelativeOf.promote();
        if (strongRelative != nullptr) {
            strongRelative->removeZOrderRelative(this);
        }
        mCurrentState.zOrderRelativeOf = nullptr;
    }

    mSurfaceFlingerConsumer->abandon();
    for (const auto& child : mCurrentChildren) {
        child->onRemoved();
@@ -2555,11 +2563,6 @@ LayerVector Layer::makeTraversalList() {
        sp<Layer> strongRelative = weakRelative.promote();
        if (strongRelative != nullptr) {
            traverse.add(strongRelative);
        } else {
            // We need to erase from current state instead of drawing
            // state so we don't overwrite when copying
            // the current state to the drawing state.
            mCurrentState.zOrderRelatives.remove(weakRelative);
        }
    }