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

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

Merge "Store layers with pending frames as smart pointers instead of raw pointers"

parents 2070050c 2f7d9aeb
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2111,7 +2111,7 @@ void SurfaceFlinger::postComposition() {
    ALOGV("postComposition");

    nsecs_t dequeueReadyTime = systemTime();
    for (auto layer : mLayersWithQueuedFrames) {
    for (const auto& layer : mLayersWithQueuedFrames) {
        layer->releasePendingBuffer(dequeueReadyTime);
    }

@@ -3056,7 +3056,7 @@ bool SurfaceFlinger::handlePageFlip() {
        // writes to Layer current state. See also b/119481871
        Mutex::Autolock lock(mStateLock);

        for (auto& layer : mLayersWithQueuedFrames) {
        for (const auto& layer : mLayersWithQueuedFrames) {
            if (layer->latchBuffer(visibleRegions, latchTime, expectedPresentTime)) {
                mLayersPendingRefresh.push_back(layer);
            }
+2 −3
Original line number Diff line number Diff line
@@ -1091,9 +1091,8 @@ private:
    bool mAnimCompositionPending = false;

    // Tracks layers that have pending frames which are candidates for being
    // latched. Because this contains a set of raw layer pointers, can only be
    // mutated on the main thread.
    std::unordered_set<Layer*> mLayersWithQueuedFrames;
    // latched.
    std::unordered_set<sp<Layer>, ISurfaceComposer::SpHash<Layer>> mLayersWithQueuedFrames;
    // Tracks layers that need to update a display's dirty region.
    std::vector<sp<Layer>> mLayersPendingRefresh;
    std::array<sp<Fence>, 2> mPreviousPresentFences = {Fence::NO_FENCE, Fence::NO_FENCE};