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

Commit c1e7628f authored by Patrick Williams's avatar Patrick Williams Committed by Android (Google) Code Review
Browse files

Merge "Fix RenderArea use after free error"

parents 5cfcc124 3190813d
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -6509,7 +6509,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenCommon(
            [=, renderAreaFuture = std::move(renderAreaFuture)]() FTL_FAKE_GUARD(
                    kMainThreadContext) mutable -> ftl::SharedFuture<FenceResult> {
                ScreenCaptureResults captureResults;
                std::unique_ptr<RenderArea> renderArea = renderAreaFuture.get();
                std::shared_ptr<RenderArea> renderArea = renderAreaFuture.get();
                if (!renderArea) {
                    ALOGW("Skipping screen capture because of invalid render area.");
                    if (captureListener) {
@@ -6521,7 +6521,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenCommon(

                ftl::SharedFuture<FenceResult> renderFuture;
                renderArea->render([&]() FTL_FAKE_GUARD(kMainThreadContext) {
                    renderFuture = renderScreenImpl(std::move(renderArea), traverseLayers, buffer,
                    renderFuture = renderScreenImpl(renderArea, traverseLayers, buffer,
                                                    canCaptureBlackoutContent, regionSampling,
                                                    grayscale, captureResults);
                });
@@ -6549,7 +6549,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenCommon(
}

ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
        std::unique_ptr<RenderArea> renderArea, TraverseLayersFunction traverseLayers,
        std::shared_ptr<const RenderArea> renderArea, TraverseLayersFunction traverseLayers,
        const std::shared_ptr<renderengine::ExternalTexture>& buffer,
        bool canCaptureBlackoutContent, bool regionSampling, bool grayscale,
        ScreenCaptureResults& captureResults) {
+1 −1
Original line number Diff line number Diff line
@@ -797,7 +797,7 @@ private:
            const std::shared_ptr<renderengine::ExternalTexture>&, bool regionSampling,
            bool grayscale, const sp<IScreenCaptureListener>&);
    ftl::SharedFuture<FenceResult> renderScreenImpl(
            std::unique_ptr<RenderArea>, TraverseLayersFunction,
            std::shared_ptr<const RenderArea>, TraverseLayersFunction,
            const std::shared_ptr<renderengine::ExternalTexture>&, bool canCaptureBlackoutContent,
            bool regionSampling, bool grayscale, ScreenCaptureResults&) EXCLUDES(mStateLock)
            REQUIRES(kMainThreadContext);
+1 −1
Original line number Diff line number Diff line
@@ -401,7 +401,7 @@ public:
        return mFlinger->setPowerModeInternal(display, mode);
    }

    auto renderScreenImpl(std::unique_ptr<RenderArea> renderArea,
    auto renderScreenImpl(std::shared_ptr<const RenderArea> renderArea,
                          SurfaceFlinger::TraverseLayersFunction traverseLayers,
                          const std::shared_ptr<renderengine::ExternalTexture>& buffer,
                          bool forSystem, bool regionSampling) {