Skip to content

Commit a410ba7

Browse files
AMouriAndroid (Google) Code Review
authored andcommitted
Merge "Fix ownership for RenderArea in screenshots." into main
2 parents 5bfedbb + 37973d9 commit a410ba7

3 files changed

Lines changed: 7 additions & 5 deletions

File tree

services/surfaceflinger/SurfaceFlinger.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7648,7 +7648,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
76487648

76497649
if (hdrBuffer && gainmapBuffer) {
76507650
ftl::SharedFuture<FenceResult> hdrRenderFuture =
7651-
renderScreenImpl(renderArea.get(), hdrBuffer, regionSampling, grayscale,
7651+
renderScreenImpl(std::move(renderArea), hdrBuffer, regionSampling, grayscale,
76527652
isProtected, captureResults, displayState, layers);
76537653
captureResults.buffer = buffer->getBuffer();
76547654
captureResults.optionalGainMap = gainmapBuffer->getBuffer();
@@ -7672,7 +7672,7 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
76727672
})
76737673
.share();
76747674
} else {
7675-
renderFuture = renderScreenImpl(renderArea.get(), buffer, regionSampling, grayscale,
7675+
renderFuture = renderScreenImpl(std::move(renderArea), buffer, regionSampling, grayscale,
76767676
isProtected, captureResults, displayState, layers);
76777677
}
76787678

@@ -7693,7 +7693,8 @@ ftl::SharedFuture<FenceResult> SurfaceFlinger::captureScreenshot(
76937693
}
76947694

76957695
ftl::SharedFuture<FenceResult> SurfaceFlinger::renderScreenImpl(
7696-
const RenderArea* renderArea, const std::shared_ptr<renderengine::ExternalTexture>& buffer,
7696+
std::unique_ptr<const RenderArea> renderArea,
7697+
const std::shared_ptr<renderengine::ExternalTexture>& buffer,
76977698
bool regionSampling, bool grayscale, bool isProtected, ScreenCaptureResults& captureResults,
76987699
const std::optional<OutputCompositionState>& displayState,
76997700
const std::vector<std::pair<Layer*, sp<LayerFE>>>& layers) {

services/surfaceflinger/SurfaceFlinger.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -894,7 +894,8 @@ class SurfaceFlinger : public BnSurfaceComposer,
894894
const std::shared_ptr<renderengine::ExternalTexture>& gainmapBuffer = nullptr);
895895

896896
ftl::SharedFuture<FenceResult> renderScreenImpl(
897-
const RenderArea*, const std::shared_ptr<renderengine::ExternalTexture>&,
897+
std::unique_ptr<const RenderArea> renderArea,
898+
const std::shared_ptr<renderengine::ExternalTexture>&,
898899
bool regionSampling, bool grayscale, bool isProtected, ScreenCaptureResults&,
899900
const std::optional<OutputCompositionState>& displayState,
900901
const std::vector<std::pair<Layer*, sp<LayerFE>>>& layers);

services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ class TestableSurfaceFlinger {
473473
auto displayState = std::optional{display->getCompositionDisplay()->getState()};
474474
auto layers = getLayerSnapshotsFn();
475475

476-
return mFlinger->renderScreenImpl(renderArea.get(), buffer, regionSampling,
476+
return mFlinger->renderScreenImpl(std::move(renderArea), buffer, regionSampling,
477477
false /* grayscale */, false /* isProtected */,
478478
captureResults, displayState, layers);
479479
}

0 commit comments

Comments
 (0)