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
diff --git a/libs/gui/include/gui/SurfaceComposerClient.h b/libs/gui/include/gui/SurfaceComposerClient.h
index f226010..1a9710a 100644
--- a/libs/gui/include/gui/SurfaceComposerClient.h
+++ b/libs/gui/include/gui/SurfaceComposerClient.h
@@ -601,15 +601,8 @@
ScreenCaptureResults& captureResults);
static status_t captureDisplay(uint64_t displayOrLayerStack,
ScreenCaptureResults& captureResults);
- static status_t captureLayers(const sp<IBinder>& layerHandle, ui::Dataspace reqDataSpace,
- ui::PixelFormat reqPixelFormat, const Rect& sourceCrop,
- float frameScale, sp<GraphicBuffer>* outBuffer);
- static status_t 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);
+ static status_t captureLayers(const LayerCaptureArgs& captureArgs,
+ ScreenCaptureResults& captureResults);
};
// ---------------------------------------------------------------------------