Loading libs/gui/SurfaceComposerClient.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -2707,14 +2707,16 @@ status_t SurfaceComposerClient::createSurfaceChecked(const String8& name, uint32 return err; } sp<SurfaceControl> SurfaceComposerClient::mirrorSurface(SurfaceControl* mirrorFromSurface) { sp<SurfaceControl> SurfaceComposerClient::mirrorSurface(SurfaceControl* mirrorFromSurface, SurfaceControl* stopAt) { if (mirrorFromSurface == nullptr) { return nullptr; } sp<IBinder> mirrorFromHandle = mirrorFromSurface->getHandle(); sp<IBinder> stopAtHandle = stopAt ? stopAt->getHandle() : nullptr; gui::CreateSurfaceResult result; const binder::Status status = mClient->mirrorSurface(mirrorFromHandle, &result); const binder::Status status = mClient->mirrorSurface(mirrorFromHandle, stopAtHandle, &result); const status_t err = statusTFromBinderStatus(status); if (err == NO_ERROR) { return sp<SurfaceControl>::make(this, result.handle, result.layerId, Loading libs/gui/aidl/android/gui/ISurfaceComposerClient.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -58,7 +58,7 @@ interface ISurfaceComposerClient { */ FrameStats getLayerFrameStats(IBinder handle); CreateSurfaceResult mirrorSurface(IBinder mirrorFromHandle); CreateSurfaceResult mirrorSurface(IBinder mirrorFromHandle, @nullable IBinder stopAtHandle); CreateSurfaceResult mirrorDisplay(long displayId); Loading libs/gui/include/gui/SurfaceComposerClient.h +13 −1 Original line number Diff line number Diff line Loading @@ -389,7 +389,19 @@ public: // A A' // | | // B B' sp<SurfaceControl> mirrorSurface(SurfaceControl* mirrorFromSurface); // // The mirrored hierarchy will exclude all layers z-ordered above the layer specified by // stopAt. With stopAt specified as B: // // Real Hierarchy Mirror // SC (value that's returned) // | // A A' // | // B // sp<SurfaceControl> mirrorSurface(SurfaceControl* mirrorFromSurface, SurfaceControl* stopAt = nullptr); sp<SurfaceControl> mirrorDisplay(DisplayId displayId); Loading services/surfaceflinger/Client.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -99,10 +99,11 @@ binder::Status Client::getLayerFrameStats(const sp<IBinder>& handle, gui::FrameS } binder::Status Client::mirrorSurface(const sp<IBinder>& mirrorFromHandle, const sp<IBinder>& stopAtHandle, gui::CreateSurfaceResult* outResult) { LayerCreationArgs args(mFlinger.get(), sp<Client>::fromExisting(this), "MirrorRoot", 0 /* flags */, gui::LayerMetadata()); status_t status = mFlinger->mirrorLayer(args, mirrorFromHandle, *outResult); status_t status = mFlinger->mirrorLayer(args, mirrorFromHandle, stopAtHandle, *outResult); return binderStatusFromStatusT(status); } Loading services/surfaceflinger/Client.h +1 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ private: gui::FrameStats* outStats) override; binder::Status mirrorSurface(const sp<IBinder>& mirrorFromHandle, const sp<IBinder>& stopAtHandle, gui::CreateSurfaceResult* outResult) override; binder::Status mirrorDisplay(int64_t displayId, gui::CreateSurfaceResult* outResult) override; Loading Loading
libs/gui/SurfaceComposerClient.cpp +4 −2 Original line number Diff line number Diff line Loading @@ -2707,14 +2707,16 @@ status_t SurfaceComposerClient::createSurfaceChecked(const String8& name, uint32 return err; } sp<SurfaceControl> SurfaceComposerClient::mirrorSurface(SurfaceControl* mirrorFromSurface) { sp<SurfaceControl> SurfaceComposerClient::mirrorSurface(SurfaceControl* mirrorFromSurface, SurfaceControl* stopAt) { if (mirrorFromSurface == nullptr) { return nullptr; } sp<IBinder> mirrorFromHandle = mirrorFromSurface->getHandle(); sp<IBinder> stopAtHandle = stopAt ? stopAt->getHandle() : nullptr; gui::CreateSurfaceResult result; const binder::Status status = mClient->mirrorSurface(mirrorFromHandle, &result); const binder::Status status = mClient->mirrorSurface(mirrorFromHandle, stopAtHandle, &result); const status_t err = statusTFromBinderStatus(status); if (err == NO_ERROR) { return sp<SurfaceControl>::make(this, result.handle, result.layerId, Loading
libs/gui/aidl/android/gui/ISurfaceComposerClient.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -58,7 +58,7 @@ interface ISurfaceComposerClient { */ FrameStats getLayerFrameStats(IBinder handle); CreateSurfaceResult mirrorSurface(IBinder mirrorFromHandle); CreateSurfaceResult mirrorSurface(IBinder mirrorFromHandle, @nullable IBinder stopAtHandle); CreateSurfaceResult mirrorDisplay(long displayId); Loading
libs/gui/include/gui/SurfaceComposerClient.h +13 −1 Original line number Diff line number Diff line Loading @@ -389,7 +389,19 @@ public: // A A' // | | // B B' sp<SurfaceControl> mirrorSurface(SurfaceControl* mirrorFromSurface); // // The mirrored hierarchy will exclude all layers z-ordered above the layer specified by // stopAt. With stopAt specified as B: // // Real Hierarchy Mirror // SC (value that's returned) // | // A A' // | // B // sp<SurfaceControl> mirrorSurface(SurfaceControl* mirrorFromSurface, SurfaceControl* stopAt = nullptr); sp<SurfaceControl> mirrorDisplay(DisplayId displayId); Loading
services/surfaceflinger/Client.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -99,10 +99,11 @@ binder::Status Client::getLayerFrameStats(const sp<IBinder>& handle, gui::FrameS } binder::Status Client::mirrorSurface(const sp<IBinder>& mirrorFromHandle, const sp<IBinder>& stopAtHandle, gui::CreateSurfaceResult* outResult) { LayerCreationArgs args(mFlinger.get(), sp<Client>::fromExisting(this), "MirrorRoot", 0 /* flags */, gui::LayerMetadata()); status_t status = mFlinger->mirrorLayer(args, mirrorFromHandle, *outResult); status_t status = mFlinger->mirrorLayer(args, mirrorFromHandle, stopAtHandle, *outResult); return binderStatusFromStatusT(status); } Loading
services/surfaceflinger/Client.h +1 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ private: gui::FrameStats* outStats) override; binder::Status mirrorSurface(const sp<IBinder>& mirrorFromHandle, const sp<IBinder>& stopAtHandle, gui::CreateSurfaceResult* outResult) override; binder::Status mirrorDisplay(int64_t displayId, gui::CreateSurfaceResult* outResult) override; Loading