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

Commit 01eb9792 authored by Jeff Brown's avatar Jeff Brown
Browse files

Fix layer removal transaction.

Layers were not properly being removed because we were
setting the wrong transaction type flag at the time of
removal.

When layers are removed, we must use eDisplayTransactionNeeded,
not eTransactionNeeded, to ensure that the mLayersRemoved
flag is checked and the appropriate cleanup occurs.

Bug: 6970310
Change-Id: Id4b2897a34d4ac00aa0f92349c0ec6db95c1aaf7
parent ea599dff
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -1406,7 +1406,7 @@ status_t SurfaceFlinger::removeLayer(const sp<LayerBase>& layer)
    Mutex::Autolock _l(mStateLock);
    Mutex::Autolock _l(mStateLock);
    status_t err = purgatorizeLayer_l(layer);
    status_t err = purgatorizeLayer_l(layer);
    if (err == NO_ERROR)
    if (err == NO_ERROR)
        setTransactionFlags(eTransactionNeeded);
        setTransactionFlags(eDisplayTransactionNeeded);
    return err;
    return err;
}
}


@@ -1712,7 +1712,7 @@ status_t SurfaceFlinger::onLayerRemoved(const sp<Client>& client, SurfaceID sid)
    if (layer != 0) {
    if (layer != 0) {
        err = purgatorizeLayer_l(layer);
        err = purgatorizeLayer_l(layer);
        if (err == NO_ERROR) {
        if (err == NO_ERROR) {
            setTransactionFlags(eTransactionNeeded);
            setTransactionFlags(eDisplayTransactionNeeded);
        }
        }
    }
    }
    return err;
    return err;