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
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index 229a5c2..2982a99 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -1922,19 +1922,31 @@
// ----------------------------------------------------------------------------
-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 @@
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,