summaryrefslogtreecommitdiff
path: root/libs/gui/SurfaceComposerClient.cpp
diff options
context:
space:
mode:
author chaviw <chaviw@google.com> 2020-07-24 17:42:39 -0700
committer chaviw <chaviw@google.com> 2020-07-30 16:53:13 -0700
commitd24328904823a47edc328d2dceb167f73f74850b (patch)
tree09bb583e20485187620517a7666a24c71697dbab /libs/gui/SurfaceComposerClient.cpp
parent6278ece89a4745141d9fc83d2affffa40614db22 (diff)
Use DisplayCaptureArgs for displayCapture functions.
Updated displayCapture functions to use the DisplayCaptureArgs and ScreenCaptureResults instead of the list of arguments and out arguments. This only updated the native code, not JNI or Java Test: display screenshot + secure works Test: adb shell screencap Test: SurfaceFlinger_test Bug: 162367424 Change-Id: I5210a0881c96436c128c3ffb328a5a6ee01beca7
Diffstat (limited to 'libs/gui/SurfaceComposerClient.cpp')
-rw-r--r--libs/gui/SurfaceComposerClient.cpp26
1 files changed, 21 insertions, 5 deletions
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index 229a5c2e62..2982a99859 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -1922,19 +1922,31 @@ status_t SurfaceComposerClient::setGlobalShadowSettings(const half4& ambientColo
// ----------------------------------------------------------------------------
-status_t ScreenshotClient::capture(const sp<IBinder>& display, ui::Dataspace reqDataSpace,
+status_t ScreenshotClient::capture(const sp<IBinder>& display, ui::Dataspace /* reqDataspace */,
ui::PixelFormat reqPixelFormat, const Rect& sourceCrop,
uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform,
ui::Rotation rotation, bool captureSecureLayers,
sp<GraphicBuffer>* outBuffer, bool& outCapturedSecureLayers) {
sp<ISurfaceComposer> s(ComposerService::getComposerService());
if (s == nullptr) return NO_INIT;
- status_t ret = s->captureScreen(display, outBuffer, outCapturedSecureLayers, reqDataSpace,
- reqPixelFormat, sourceCrop, reqWidth, reqHeight,
- useIdentityTransform, rotation, captureSecureLayers);
+
+ DisplayCaptureArgs args;
+ args.displayToken = display;
+ args.pixelFormat = reqPixelFormat;
+ args.sourceCrop = sourceCrop;
+ args.width = reqWidth;
+ args.height = reqHeight;
+ args.useIdentityTransform = useIdentityTransform;
+ args.rotation = rotation;
+ args.captureSecureLayers = captureSecureLayers;
+
+ ScreenCaptureResults captureResults;
+ status_t ret = s->captureDisplay(args, captureResults);
if (ret != NO_ERROR) {
return ret;
}
+ *outBuffer = captureResults.buffer;
+ outCapturedSecureLayers = captureResults.capturedSecureLayers;
return ret;
}
@@ -1951,7 +1963,11 @@ status_t ScreenshotClient::capture(uint64_t displayOrLayerStack, ui::Dataspace*
sp<GraphicBuffer>* outBuffer) {
sp<ISurfaceComposer> s(ComposerService::getComposerService());
if (s == nullptr) return NO_INIT;
- return s->captureScreen(displayOrLayerStack, outDataspace, outBuffer);
+ ScreenCaptureResults captureResults;
+ status_t ret = s->captureDisplay(displayOrLayerStack, captureResults);
+ *outBuffer = captureResults.buffer;
+ *outDataspace = captureResults.capturedDataspace;
+ return ret;
}
status_t ScreenshotClient::captureLayers(const sp<IBinder>& layerHandle, ui::Dataspace reqDataSpace,