diff options
| author | 2024-06-26 17:17:51 -0700 | |
|---|---|---|
| committer | 2024-06-28 23:12:10 +0000 | |
| commit | 96a5aaf57b4432cb3d5cb4a2327ab548b262354b (patch) | |
| tree | ebc222a5f27ca3dd861eb763d0750a24516dcc31 /services/surfaceflinger/DisplayRenderArea.cpp | |
| parent | fbdbde9a77001535e3d0a3045ff7940ffa8d1bf9 (diff) | |
Fix region sampling for secure layers
We were swapping a couple of boolean params when requesting
screenshots for region sampling, breaking region sampling for
secure layers in the process. Fix this by passing flags instead of
booleans in a long list of arguments and add a test to verify the
code path.
FLAG: EXEMPT bugfix
Fixes: 348944802
Test: presubmit
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:871886eebe469fc21568ff363993bde9a6593837)
Merged-In: I58f12e5cf81cb59115c1b9c500ac1e18a8ec72e5
Change-Id: I58f12e5cf81cb59115c1b9c500ac1e18a8ec72e5
Diffstat (limited to 'services/surfaceflinger/DisplayRenderArea.cpp')
| -rw-r--r-- | services/surfaceflinger/DisplayRenderArea.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/services/surfaceflinger/DisplayRenderArea.cpp b/services/surfaceflinger/DisplayRenderArea.cpp index 55b395b458..c63c738d34 100644 --- a/services/surfaceflinger/DisplayRenderArea.cpp +++ b/services/surfaceflinger/DisplayRenderArea.cpp @@ -22,22 +22,20 @@ namespace android { std::unique_ptr<RenderArea> DisplayRenderArea::create(wp<const DisplayDevice> displayWeak, const Rect& sourceCrop, ui::Size reqSize, ui::Dataspace reqDataSpace, - bool hintForSeamlessTransition, - bool allowSecureLayers) { + ftl::Flags<Options> options) { if (auto display = displayWeak.promote()) { // Using new to access a private constructor. - return std::unique_ptr<DisplayRenderArea>( - new DisplayRenderArea(std::move(display), sourceCrop, reqSize, reqDataSpace, - hintForSeamlessTransition, allowSecureLayers)); + return std::unique_ptr<DisplayRenderArea>(new DisplayRenderArea(std::move(display), + sourceCrop, reqSize, + reqDataSpace, options)); } return nullptr; } DisplayRenderArea::DisplayRenderArea(sp<const DisplayDevice> display, const Rect& sourceCrop, ui::Size reqSize, ui::Dataspace reqDataSpace, - bool hintForSeamlessTransition, bool allowSecureLayers) - : RenderArea(reqSize, CaptureFill::OPAQUE, reqDataSpace, hintForSeamlessTransition, - allowSecureLayers), + ftl::Flags<Options> options) + : RenderArea(reqSize, CaptureFill::OPAQUE, reqDataSpace, options), mDisplay(std::move(display)), mSourceCrop(sourceCrop) {} @@ -46,7 +44,7 @@ const ui::Transform& DisplayRenderArea::getTransform() const { } bool DisplayRenderArea::isSecure() const { - return mAllowSecureLayers && mDisplay->isSecure(); + return mOptions.test(Options::CAPTURE_SECURE_LAYERS) && mDisplay->isSecure(); } sp<const DisplayDevice> DisplayRenderArea::getDisplayDevice() const { |