Unified display screenshot into one displayCapture function
Cleaned up SurfaceComposerClient display screenshot functions so there
is only function that takes a screenshot based on display token. It
accepts a DisplayCaptureArgs and returns ScreenCaptureResults object.
Test: Display screenshots + secure works
Test: adb shell screencap
Bug: 162367424
Change-Id: I5900f387c7533ae37d4159152bfaf106fb0391d4
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index dc6001f..bcd47ab 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -1922,52 +1922,18 @@
// ----------------------------------------------------------------------------
-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) {
+status_t ScreenshotClient::captureDisplay(const DisplayCaptureArgs& captureArgs,
+ ScreenCaptureResults& captureResults) {
sp<ISurfaceComposer> s(ComposerService::getComposerService());
if (s == nullptr) return NO_INIT;
-
- 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;
+ return s->captureDisplay(captureArgs, captureResults);
}
-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, sp<GraphicBuffer>* outBuffer) {
- bool ignored;
- return capture(display, reqDataspace, reqPixelFormat, sourceCrop, reqWidth, reqHeight,
- useIdentityTransform, rotation, false, outBuffer, ignored);
-}
-
-status_t ScreenshotClient::capture(uint64_t displayOrLayerStack, ui::Dataspace* outDataspace,
- sp<GraphicBuffer>* outBuffer) {
+status_t ScreenshotClient::captureDisplay(uint64_t displayOrLayerStack,
+ ScreenCaptureResults& captureResults) {
sp<ISurfaceComposer> s(ComposerService::getComposerService());
if (s == nullptr) return NO_INIT;
- ScreenCaptureResults captureResults;
- status_t ret = s->captureDisplay(displayOrLayerStack, captureResults);
- *outBuffer = captureResults.buffer;
- *outDataspace = captureResults.capturedDataspace;
- return ret;
+ return s->captureDisplay(displayOrLayerStack, captureResults);
}
status_t ScreenshotClient::captureLayers(const sp<IBinder>& layerHandle,