diff options
| author | 2025-01-14 12:45:34 -0800 | |
|---|---|---|
| committer | 2025-01-14 12:45:34 -0800 | |
| commit | a410ba73fcd40332d011f845ccbe93c1dc63db1e (patch) | |
| tree | 39bab5bc6fb16dcc9276bdc128be625f27cf6aa6 | |
| parent | 5bfedbb8461de59359c3a13e33373e4e1d7d346f (diff) | |
| parent | 37973d9a8e812cf54c8fa017767003896e9737f5 (diff) | |
Merge "Fix ownership for RenderArea in screenshots." into main
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 7 | ||||
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.h | 3 | ||||
| -rw-r--r-- | services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h | 2 |
3 files changed, 7 insertions, 5 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 1f8557c675..2ad24cca77 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -7648,7 +7648,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot( if (hdrBuffer && gainmapBuffer) { ftl::SharedFuture<FenceResult> hdrRenderFuture = - renderScreenImpl(renderArea.get(), hdrBuffer, regionSampling, grayscale, + renderScreenImpl(std::move(renderArea), hdrBuffer, regionSampling, grayscale, isProtected, captureResults, displayState, layers); captureResults.buffer = buffer->getBuffer(); captureResults.optionalGainMap = gainmapBuffer->getBuffer(); @@ -7672,7 +7672,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot( }) .share(); } else { - renderFuture = renderScreenImpl(renderArea.get(), buffer, regionSampling, grayscale, + renderFuture = renderScreenImpl(std::move(renderArea), buffer, regionSampling, grayscale, isProtected, captureResults, displayState, layers); } @@ -7693,7 +7693,8 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot( } ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl( - const RenderArea* renderArea, const std::shared_ptr<renderengine::ExternalTexture>& buffer, + std::unique_ptr<const RenderArea> renderArea, + const std::shared_ptr<renderengine::ExternalTexture>& buffer, bool regionSampling, bool grayscale, bool isProtected, ScreenCaptureResults& captureResults, const std::optional<OutputCompositionState>& displayState, const std::vector<std::pair<Layer*, sp<LayerFE>>>& layers) { diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index 824a55a652..a793d50d62 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -894,7 +894,8 @@ private: const std::shared_ptr<renderengine::ExternalTexture>& gainmapBuffer = nullptr); ftl::SharedFuture<FenceResult> renderScreenImpl( - const RenderArea*, const std::shared_ptr<renderengine::ExternalTexture>&, + std::unique_ptr<const RenderArea> renderArea, + const std::shared_ptr<renderengine::ExternalTexture>&, bool regionSampling, bool grayscale, bool isProtected, ScreenCaptureResults&, const std::optional<OutputCompositionState>& displayState, const std::vector<std::pair<Layer*, sp<LayerFE>>>& layers); diff --git a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h index c2e88688e0..2353ef8db6 100644 --- a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h +++ b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h @@ -473,7 +473,7 @@ public: auto displayState = std::optional{display->getCompositionDisplay()->getState()}; auto layers = getLayerSnapshotsFn(); - return mFlinger->renderScreenImpl(renderArea.get(), buffer, regionSampling, + return mFlinger->renderScreenImpl(std::move(renderArea), buffer, regionSampling, false /* grayscale */, false /* isProtected */, captureResults, displayState, layers); } |