Loading libs/gui/SurfaceComposerClient.cpp +3 −39 Original line number Diff line number Diff line Loading @@ -1936,47 +1936,11 @@ status_t ScreenshotClient::captureDisplay(uint64_t displayOrLayerStack, 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) { 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) { 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; 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 libs/gui/include/gui/SurfaceComposerClient.h +2 −9 Original line number Diff line number Diff line Loading @@ -601,15 +601,8 @@ public: 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); }; // --------------------------------------------------------------------------- Loading services/surfaceflinger/tests/Credentials_test.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ using ui::ColorMode; namespace { const String8 DISPLAY_NAME("Credentials Display Test"); const String8 SURFACE_NAME("Test Surface Name"); const float FRAME_SCALE = 1.0f; } // namespace /** Loading Loading @@ -272,10 +271,12 @@ TEST_F(CredentialsTest, CaptureLayersTest) { setupBackgroundSurface(); sp<GraphicBuffer> outBuffer; std::function<status_t()> condition = [=]() { sp<GraphicBuffer> outBuffer; return ScreenshotClient::captureLayers(mBGSurfaceControl->getHandle(), ui::Dataspace::V0_SRGB, ui::PixelFormat::RGBA_8888, Rect(0, 0, 1, 1), FRAME_SCALE, &outBuffer); LayerCaptureArgs captureArgs; captureArgs.layerHandle = mBGSurfaceControl->getHandle(); captureArgs.sourceCrop = {0, 0, 1, 1}; ScreenCaptureResults captureResults; return ScreenshotClient::captureLayers(captureArgs, captureResults); }; ASSERT_NO_FATAL_FAILURE(checkWithPrivileges<status_t>(condition, NO_ERROR, PERMISSION_DENIED)); } Loading Loading
libs/gui/SurfaceComposerClient.cpp +3 −39 Original line number Diff line number Diff line Loading @@ -1936,47 +1936,11 @@ status_t ScreenshotClient::captureDisplay(uint64_t displayOrLayerStack, 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) { 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) { 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; 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
libs/gui/include/gui/SurfaceComposerClient.h +2 −9 Original line number Diff line number Diff line Loading @@ -601,15 +601,8 @@ public: 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); }; // --------------------------------------------------------------------------- Loading
services/surfaceflinger/tests/Credentials_test.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ using ui::ColorMode; namespace { const String8 DISPLAY_NAME("Credentials Display Test"); const String8 SURFACE_NAME("Test Surface Name"); const float FRAME_SCALE = 1.0f; } // namespace /** Loading Loading @@ -272,10 +271,12 @@ TEST_F(CredentialsTest, CaptureLayersTest) { setupBackgroundSurface(); sp<GraphicBuffer> outBuffer; std::function<status_t()> condition = [=]() { sp<GraphicBuffer> outBuffer; return ScreenshotClient::captureLayers(mBGSurfaceControl->getHandle(), ui::Dataspace::V0_SRGB, ui::PixelFormat::RGBA_8888, Rect(0, 0, 1, 1), FRAME_SCALE, &outBuffer); LayerCaptureArgs captureArgs; captureArgs.layerHandle = mBGSurfaceControl->getHandle(); captureArgs.sourceCrop = {0, 0, 1, 1}; ScreenCaptureResults captureResults; return ScreenshotClient::captureLayers(captureArgs, captureResults); }; ASSERT_NO_FATAL_FAILURE(checkWithPrivileges<status_t>(condition, NO_ERROR, PERMISSION_DENIED)); } Loading