diff options
Diffstat (limited to 'libs/gui/SurfaceComposerClient.cpp')
-rw-r--r-- | libs/gui/SurfaceComposerClient.cpp | 26 |
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, |