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

Commit 0c644e31 authored by Vishnu Nair's avatar Vishnu Nair Committed by Automerger Merge Worker
Browse files

Merge "SF: Pass the release fence to the owning layer instead of the clone"...

Merge "SF: Pass the release fence to the owning layer instead of the clone" into udc-dev am: 0d6449cf

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/21481482



Change-Id: I00eb3c3a119102bd1dfdf9b39887589cab02903f
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 2615affd 0d6449cf
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -848,6 +848,11 @@ public:
    void updateMetadataSnapshot(const LayerMetadata& parentMetadata);
    void updateRelativeMetadataSnapshot(const LayerMetadata& relativeLayerMetadata,
                                        std::unordered_set<Layer*>& visited);
    sp<Layer> getClonedFrom() const {
        return mClonedFrom != nullptr ? mClonedFrom.promote() : nullptr;
    }
    bool isClone() { return mClonedFrom != nullptr; }

    bool willPresentCurrentTransaction() const;

    void callReleaseBufferCallback(const sp<ITransactionCompletedListener>& listener,
@@ -885,10 +890,6 @@ protected:
    void gatherBufferInfo();
    void onSurfaceFrameCreated(const std::shared_ptr<frametimeline::SurfaceFrame>&);

    sp<Layer> getClonedFrom() const {
        return mClonedFrom != nullptr ? mClonedFrom.promote() : nullptr;
    }
    bool isClone() { return mClonedFrom != nullptr; }
    bool isClonedFromAlive() { return getClonedFrom() != nullptr; }

    void cloneDrawingState(const Layer* from);
+3 −1
Original line number Diff line number Diff line
@@ -2641,7 +2641,9 @@ void SurfaceFlinger::composite(TimePoint frameTime, VsyncId vsyncId)
        CompositionResult compositionResult{layerFE->stealCompositionResult()};
        layer->onPreComposition(compositionResult.refreshStartTime);
        for (auto releaseFence : compositionResult.releaseFences) {
            layer->onLayerDisplayed(releaseFence);
            Layer* clonedFrom = layer->getClonedFrom().get();
            auto owningLayer = clonedFrom ? clonedFrom : layer;
            owningLayer->onLayerDisplayed(releaseFence);
        }
        if (compositionResult.lastClientCompositionFence) {
            layer->setWasClientComposed(compositionResult.lastClientCompositionFence);