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

Commit f2c79393 authored by Lloyd Pique's avatar Lloyd Pique
Browse files

SF: Latching buffers requires holding mStateLock

Bug: 119481871
Test: SurfaceFlinger unit tests
Test: go/wm-smoke
Change-Id: I036b2cd1ae096a62542088b19608e43cbcceb120
parent 2098e207
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -3002,6 +3002,11 @@ bool SurfaceFlinger::handlePageFlip()
        }
    });

    if (!mLayersWithQueuedFrames.empty()) {
        // mStateLock is needed for latchBuffer as LayerRejecter::reject()
        // writes to Layer current state. See also b/119481871
        Mutex::Autolock lock(mStateLock);

        for (auto& layer : mLayersWithQueuedFrames) {
            const Region dirty(layer->latchBuffer(visibleRegions, latchTime, getBE().flushFence));
            layer->useSurfaceDamage();
@@ -3010,6 +3015,7 @@ bool SurfaceFlinger::handlePageFlip()
                newDataLatched = true;
            }
        }
    }

    // Clear the renderengine fence here...
    // downstream code assumes that a cleared fence == NO_FENCE, so reassign to