diff options
Diffstat (limited to 'services/surfaceflinger/Layer.cpp')
-rw-r--r-- | services/surfaceflinger/Layer.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index 6908c883fd..9b02d3e616 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -2455,6 +2455,21 @@ bool Layer::reparentChildren(const sp<IBinder>& newParentHandle) { return true; } +bool Layer::detachChildren() { + traverseInZOrder([this](Layer* child) { + if (child == this) { + return; + } + + sp<Client> client(child->mClientRef.promote()); + if (client != nullptr) { + client->detachLayer(child); + } + }); + + return true; +} + void Layer::setParent(const sp<Layer>& layer) { mParent = layer; } |