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

Commit fed164b4 authored by Ady Abraham's avatar Ady Abraham
Browse files

SurfaceFlinger: insert RefreshRateOverlay layer in the correct place

Reinsert RefreshRateOverlay layer to layersSortedByZ when setting Z
to keep layersSortedByZ sorted.

Test: adb shell service call SurfaceFlinger 1034 i32 1 + screen rotate
Bug: 131211294
Change-Id: I40b8f33b6edda7fc8840e4db839c9c0665068c8c
parent f888c932
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -37,9 +37,16 @@ bool RefreshRateOverlay::createLayer() {
        return false;
    }

    Mutex::Autolock _l(mFlinger.mStateLock);
    mLayer = mClient->getLayerUser(mIBinder);
    mLayer->setCrop_legacy(Rect(50, 70, 200, 100), true);
    mLayer->setLayer(INT32_MAX - 2);

    // setting Layer's Z requires resorting layersSortedByZ
    ssize_t idx = mFlinger.mCurrentState.layersSortedByZ.indexOf(mLayer);
    if (mLayer->setLayer(INT32_MAX - 2) && idx >= 0) {
        mFlinger.mCurrentState.layersSortedByZ.removeAt(idx);
        mFlinger.mCurrentState.layersSortedByZ.add(mLayer);
    }

    return true;
}
+6 −2
Original line number Diff line number Diff line
@@ -5432,9 +5432,13 @@ status_t SurfaceFlinger::onTransact(uint32_t code, const Parcel& data, Parcel* r
                // TODO(b/129297325): expose this via developer menu option
                n = data.readInt32();
                if (n && !mRefreshRateOverlay) {
                    RefreshRateType type;
                    {
                        std::lock_guard<std::mutex> lock(mActiveConfigLock);
                        type = mDesiredActiveConfig.type;
                    }
                    mRefreshRateOverlay = std::make_unique<RefreshRateOverlay>(*this);
                    mRefreshRateOverlay->changeRefreshRate(mDesiredActiveConfig.type);
                    mRefreshRateOverlay->changeRefreshRate(type);
                } else if (!n) {
                    mRefreshRateOverlay.reset();
                }