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,
