diff options
Diffstat (limited to 'services/surfaceflinger/Layer.cpp')
-rw-r--r-- | services/surfaceflinger/Layer.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index 77d9d0fb03..99f0f0b725 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -165,6 +165,11 @@ void Layer::onFirstRef() { } Layer::~Layer() { + sp<Client> c(mClientRef.promote()); + if (c != 0) { + c->detachLayer(this); + } + for (auto& point : mRemoteSyncPoints) { point->setTransactionApplied(); } @@ -260,10 +265,6 @@ void Layer::onSidebandStreamChanged() { // the layer has been remove from the current state list (and just before // it's removed from the drawing state list) void Layer::onRemoved() { - sp<Client> c(mClientRef.promote()); - if (c != 0) { - c->detachLayer(this); - } mSurfaceFlingerConsumer->abandon(); } |