summaryrefslogtreecommitdiff
path: root/libs/gui/SurfaceComposerClient.cpp
diff options
context:
space:
mode:
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,