Loading libs/gui/ISurfaceComposer.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -100,7 +100,7 @@ public: const ui::Dataspace reqDataspace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform, ISurfaceComposer::Rotation rotation) { ISurfaceComposer::Rotation rotation, bool captureSecureLayers) { Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); data.writeStrongBinder(display); Loading @@ -111,6 +111,7 @@ public: data.writeUint32(reqHeight); data.writeInt32(static_cast<int32_t>(useIdentityTransform)); data.writeInt32(static_cast<int32_t>(rotation)); data.writeInt32(static_cast<int32_t>(captureSecureLayers)); status_t result = remote()->transact(BnSurfaceComposer::CAPTURE_SCREEN, data, &reply); if (result != NO_ERROR) { ALOGE("captureScreen failed to transact: %d", result); Loading Loading @@ -884,10 +885,11 @@ status_t BnSurfaceComposer::onTransact( uint32_t reqHeight = data.readUint32(); bool useIdentityTransform = static_cast<bool>(data.readInt32()); int32_t rotation = data.readInt32(); bool captureSecureLayers = static_cast<bool>(data.readInt32()); status_t res = captureScreen(display, &outBuffer, reqDataspace, reqPixelFormat, sourceCrop, reqWidth, reqHeight, useIdentityTransform, static_cast<ISurfaceComposer::Rotation>(rotation)); static_cast<ISurfaceComposer::Rotation>(rotation), captureSecureLayers); reply->writeInt32(res); if (res == NO_ERROR) { reply->write(*outBuffer); Loading libs/gui/SurfaceComposerClient.cpp +12 −3 Original line number Diff line number Diff line Loading @@ -1469,18 +1469,27 @@ status_t SurfaceComposerClient::isWideColorDisplay(const sp<IBinder>& display, status_t ScreenshotClient::capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform, uint32_t rotation, sp<GraphicBuffer>* outBuffer) { uint32_t rotation, bool captureSecureLayers, sp<GraphicBuffer>* outBuffer) { sp<ISurfaceComposer> s(ComposerService::getComposerService()); if (s == nullptr) return NO_INIT; status_t ret = s->captureScreen(display, outBuffer, reqDataSpace, reqPixelFormat, sourceCrop, reqWidth, reqHeight, useIdentityTransform, static_cast<ISurfaceComposer::Rotation>(rotation)); static_cast<ISurfaceComposer::Rotation>(rotation), captureSecureLayers); if (ret != NO_ERROR) { return ret; } return ret; } status_t ScreenshotClient::capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform, uint32_t rotation, sp<GraphicBuffer>* outBuffer) { return capture(display, reqDataSpace, reqPixelFormat, sourceCrop, reqWidth, reqHeight, useIdentityTransform, rotation, false, outBuffer); } status_t ScreenshotClient::captureLayers(const sp<IBinder>& layerHandle, const ui::Dataspace reqDataSpace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, Loading libs/gui/include/gui/ISurfaceComposer.h +2 −1 Original line number Diff line number Diff line Loading @@ -209,7 +209,8 @@ public: const ui::Dataspace reqDataspace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform, Rotation rotation = eRotateNone) = 0; Rotation rotation = eRotateNone, bool captureSecureLayers = false) = 0; /** * Capture the specified screen. This requires READ_FRAME_BUFFER * permission. This function will fail if there is a secure window on Loading libs/gui/include/gui/SurfaceComposerClient.h +4 −0 Original line number Diff line number Diff line Loading @@ -451,6 +451,10 @@ class ScreenshotClient { public: // if cropping isn't required, callers may pass in a default Rect, e.g.: // capture(display, producer, Rect(), reqWidth, ...); static status_t capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform, uint32_t rotation, bool captureSecureLayers, sp<GraphicBuffer>* outBuffer); static status_t capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform, Loading libs/gui/tests/Surface_test.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -615,7 +615,8 @@ public: const ui::Dataspace /*reqDataspace*/, const ui::PixelFormat /*reqPixelFormat*/, Rect /*sourceCrop*/, uint32_t /*reqWidth*/, uint32_t /*reqHeight*/, bool /*useIdentityTransform*/, Rotation /*rotation*/) override { bool /*useIdentityTransform*/, Rotation /*rotation*/, bool /*captureSecureLayers*/) override { return NO_ERROR; } virtual status_t captureLayers(const sp<IBinder>& /*parentHandle*/, Loading Loading
libs/gui/ISurfaceComposer.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -100,7 +100,7 @@ public: const ui::Dataspace reqDataspace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform, ISurfaceComposer::Rotation rotation) { ISurfaceComposer::Rotation rotation, bool captureSecureLayers) { Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); data.writeStrongBinder(display); Loading @@ -111,6 +111,7 @@ public: data.writeUint32(reqHeight); data.writeInt32(static_cast<int32_t>(useIdentityTransform)); data.writeInt32(static_cast<int32_t>(rotation)); data.writeInt32(static_cast<int32_t>(captureSecureLayers)); status_t result = remote()->transact(BnSurfaceComposer::CAPTURE_SCREEN, data, &reply); if (result != NO_ERROR) { ALOGE("captureScreen failed to transact: %d", result); Loading Loading @@ -884,10 +885,11 @@ status_t BnSurfaceComposer::onTransact( uint32_t reqHeight = data.readUint32(); bool useIdentityTransform = static_cast<bool>(data.readInt32()); int32_t rotation = data.readInt32(); bool captureSecureLayers = static_cast<bool>(data.readInt32()); status_t res = captureScreen(display, &outBuffer, reqDataspace, reqPixelFormat, sourceCrop, reqWidth, reqHeight, useIdentityTransform, static_cast<ISurfaceComposer::Rotation>(rotation)); static_cast<ISurfaceComposer::Rotation>(rotation), captureSecureLayers); reply->writeInt32(res); if (res == NO_ERROR) { reply->write(*outBuffer); Loading
libs/gui/SurfaceComposerClient.cpp +12 −3 Original line number Diff line number Diff line Loading @@ -1469,18 +1469,27 @@ status_t SurfaceComposerClient::isWideColorDisplay(const sp<IBinder>& display, status_t ScreenshotClient::capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform, uint32_t rotation, sp<GraphicBuffer>* outBuffer) { uint32_t rotation, bool captureSecureLayers, sp<GraphicBuffer>* outBuffer) { sp<ISurfaceComposer> s(ComposerService::getComposerService()); if (s == nullptr) return NO_INIT; status_t ret = s->captureScreen(display, outBuffer, reqDataSpace, reqPixelFormat, sourceCrop, reqWidth, reqHeight, useIdentityTransform, static_cast<ISurfaceComposer::Rotation>(rotation)); static_cast<ISurfaceComposer::Rotation>(rotation), captureSecureLayers); if (ret != NO_ERROR) { return ret; } return ret; } status_t ScreenshotClient::capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform, uint32_t rotation, sp<GraphicBuffer>* outBuffer) { return capture(display, reqDataSpace, reqPixelFormat, sourceCrop, reqWidth, reqHeight, useIdentityTransform, rotation, false, outBuffer); } status_t ScreenshotClient::captureLayers(const sp<IBinder>& layerHandle, const ui::Dataspace reqDataSpace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, Loading
libs/gui/include/gui/ISurfaceComposer.h +2 −1 Original line number Diff line number Diff line Loading @@ -209,7 +209,8 @@ public: const ui::Dataspace reqDataspace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform, Rotation rotation = eRotateNone) = 0; Rotation rotation = eRotateNone, bool captureSecureLayers = false) = 0; /** * Capture the specified screen. This requires READ_FRAME_BUFFER * permission. This function will fail if there is a secure window on Loading
libs/gui/include/gui/SurfaceComposerClient.h +4 −0 Original line number Diff line number Diff line Loading @@ -451,6 +451,10 @@ class ScreenshotClient { public: // if cropping isn't required, callers may pass in a default Rect, e.g.: // capture(display, producer, Rect(), reqWidth, ...); static status_t capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform, uint32_t rotation, bool captureSecureLayers, sp<GraphicBuffer>* outBuffer); static status_t capture(const sp<IBinder>& display, const ui::Dataspace reqDataSpace, const ui::PixelFormat reqPixelFormat, Rect sourceCrop, uint32_t reqWidth, uint32_t reqHeight, bool useIdentityTransform, Loading
libs/gui/tests/Surface_test.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -615,7 +615,8 @@ public: const ui::Dataspace /*reqDataspace*/, const ui::PixelFormat /*reqPixelFormat*/, Rect /*sourceCrop*/, uint32_t /*reqWidth*/, uint32_t /*reqHeight*/, bool /*useIdentityTransform*/, Rotation /*rotation*/) override { bool /*useIdentityTransform*/, Rotation /*rotation*/, bool /*captureSecureLayers*/) override { return NO_ERROR; } virtual status_t captureLayers(const sp<IBinder>& /*parentHandle*/, Loading