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

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

Merge "Added isRelativeOf instead of checking if weak pointer is not null"

parents 04c70c4c e5ac40f4
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -899,6 +899,7 @@ bool Layer::setLayer(int32_t z) {
        }
        setZOrderRelativeOf(nullptr);
    }
    mCurrentState.isRelativeOf = false;
    setTransactionFlags(eTransactionNeeded);
    return true;
}
@@ -942,6 +943,7 @@ bool Layer::setRelativeLayer(const sp<IBinder>& relativeToHandle, int32_t relati
    mCurrentState.sequence++;
    mCurrentState.modified = true;
    mCurrentState.z = relativeZ;
    mCurrentState.isRelativeOf = true;

    auto oldZOrderRelativeOf = mCurrentState.zOrderRelativeOf.promote();
    if (oldZOrderRelativeOf != nullptr) {
@@ -1540,7 +1542,7 @@ int32_t Layer::getZ() const {
bool Layer::usingRelativeZ(LayerVector::StateSet stateSet) const {
    const bool useDrawing = stateSet == LayerVector::StateSet::Drawing;
    const State& state = useDrawing ? mDrawingState : mCurrentState;
    return state.zOrderRelativeOf != nullptr;
    return state.isRelativeOf;
}

__attribute__((no_sanitize("unsigned-integer-overflow"))) LayerVector Layer::makeTraversalList(
@@ -1565,8 +1567,7 @@ __attribute__((no_sanitize("unsigned-integer-overflow"))) LayerVector Layer::mak
    }

    for (const sp<Layer>& child : children) {
        const State& childState = useDrawing ? child->mDrawingState : child->mCurrentState;
        if (childState.zOrderRelativeOf != nullptr) {
        if (child->usingRelativeZ(stateSet)) {
            continue;
        }
        traverse.add(child);
+1 −0
Original line number Diff line number Diff line
@@ -170,6 +170,7 @@ public:

        // If non-null, a Surface this Surface's Z-order is interpreted relative to.
        wp<Layer> zOrderRelativeOf;
        bool isRelativeOf{false};

        // A list of surfaces whose Z-order is interpreted relative to ours.
        SortedVector<wp<Layer>> zOrderRelatives;
+2 −2
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ void LayerVector::traverseInZOrder(StateSet stateSet, const Visitor& visitor) co
        const auto& layer = (*this)[i];
        auto& state = (stateSet == StateSet::Current) ? layer->getCurrentState()
                                                      : layer->getDrawingState();
        if (state.zOrderRelativeOf != nullptr) {
        if (state.isRelativeOf) {
            continue;
        }
        layer->traverseInZOrder(stateSet, visitor);
@@ -76,7 +76,7 @@ void LayerVector::traverseInReverseZOrder(StateSet stateSet, const Visitor& visi
        const auto& layer = (*this)[i];
        auto& state = (stateSet == StateSet::Current) ? layer->getCurrentState()
                                                      : layer->getDrawingState();
        if (state.zOrderRelativeOf != nullptr) {
        if (state.isRelativeOf) {
            continue;
        }
        layer->traverseInReverseZOrder(stateSet, visitor);