From 41ade202bb683797beaa64e3459a69952ce1f0bc Mon Sep 17 00:00:00 2001 From: Melody Hsu Date: Fri, 3 May 2024 01:25:50 +0000 Subject: Wrap RenderArea creation in a builder pattern Use a builder to pass around parameters used for RenderArea creation. This allows more flexibility for when the RenderArea is created, which aids in the overall goal of reducing the number of SF main thread hops during screenshots. Creating a builder will allow the render area to later be passed into captureScreenCommon() without being wrapped in a future. Bug: b/294936197 Test: atest SurfaceFlinger_test Change-Id: I9545e02af42c7e6cd9b0c328e2ecce995811f2d7 --- services/surfaceflinger/RegionSamplingThread.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'services/surfaceflinger/RegionSamplingThread.cpp') diff --git a/services/surfaceflinger/RegionSamplingThread.cpp b/services/surfaceflinger/RegionSamplingThread.cpp index 77e045d6f9..2ec20ad5c2 100644 --- a/services/surfaceflinger/RegionSamplingThread.cpp +++ b/services/surfaceflinger/RegionSamplingThread.cpp @@ -42,6 +42,7 @@ #include "DisplayRenderArea.h" #include "FrontEnd/LayerCreationArgs.h" #include "Layer.h" +#include "RenderAreaBuilder.h" #include "Scheduler/VsyncController.h" #include "SurfaceFlinger.h" @@ -279,8 +280,11 @@ void RegionSamplingThread::captureSample() { constexpr bool kHintForSeamlessTransition = false; SurfaceFlinger::RenderAreaFuture renderAreaFuture = ftl::defer([=] { - return DisplayRenderArea::create(displayWeak, sampledBounds, sampledBounds.getSize(), - ui::Dataspace::V0_SRGB, kHintForSeamlessTransition); + DisplayRenderAreaBuilder displayRenderArea(sampledBounds, sampledBounds.getSize(), + ui::Dataspace::V0_SRGB, + kHintForSeamlessTransition, + true /* captureSecureLayers */, displayWeak); + return displayRenderArea.build(); }); std::unordered_set, SpHash> listeners; -- cgit v1.2.3-59-g8ed1b