Unified layer capture functions into one function
Cleaned up SurfaceComposerClient layer screenshot functions so there
is only function that takes a screenshot based on layer. It
accepts a LayerCaptureArgs and returns ScreenCaptureResults object.
Test: Layer screenshots in recents
Bug: 162367424
Change-Id: Iadee8024ebe895afb290a0ed798cbf8b637b30dd
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index bcd47ab..b51bf1f 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -1936,47 +1936,11 @@
return s->captureDisplay(displayOrLayerStack, captureResults);
}
-status_t ScreenshotClient::captureLayers(const sp<IBinder>& layerHandle,
- ui::Dataspace /* reqDataspace */,
- ui::PixelFormat reqPixelFormat, const Rect& sourceCrop,
- float frameScale, sp<GraphicBuffer>* outBuffer) {
+status_t ScreenshotClient::captureLayers(const LayerCaptureArgs& captureArgs,
+ ScreenCaptureResults& captureResults) {
sp<ISurfaceComposer> s(ComposerService::getComposerService());
if (s == nullptr) return NO_INIT;
-
- LayerCaptureArgs args;
- args.layerHandle = layerHandle;
- args.pixelFormat = reqPixelFormat;
- args.sourceCrop = sourceCrop;
- args.frameScale = frameScale;
-
- ScreenCaptureResults captureResults;
- status_t ret = s->captureLayers(args, captureResults);
-
- *outBuffer = captureResults.buffer;
- return ret;
-}
-
-status_t ScreenshotClient::captureChildLayers(
- const sp<IBinder>& layerHandle, ui::Dataspace /* reqDataspace */,
- ui::PixelFormat reqPixelFormat, const Rect& sourceCrop,
- const std::unordered_set<sp<IBinder>, ISurfaceComposer::SpHash<IBinder>>& excludeHandles,
- float frameScale, sp<GraphicBuffer>* outBuffer) {
- sp<ISurfaceComposer> s(ComposerService::getComposerService());
- if (s == nullptr) return NO_INIT;
-
- LayerCaptureArgs args;
- args.layerHandle = layerHandle;
- args.pixelFormat = reqPixelFormat;
- args.sourceCrop = sourceCrop;
- args.frameScale = frameScale;
- args.excludeHandles = excludeHandles;
- args.childrenOnly = true;
-
- ScreenCaptureResults captureResults;
- status_t ret = s->captureLayers(args, captureResults);
-
- *outBuffer = captureResults.buffer;
- return ret;
+ return s->captureLayers(captureArgs, captureResults);
}
} // namespace android