From 3851225fddb6f1755a8034aa7a9f9ae7397b56a9 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Wed, 17 May 2017 14:36:16 -0700 Subject: [PATCH] surfaceflinger: clear HWC layers in Layer::onRemoved v2 Explicitly destroy HWC layers in Layer::onRemoved rather than doing that implicitly in the destructor. The layer may be destructed by any thread that holds a sp, but only the main thread should talk to the composer. v2 fixes build breakage for non-HWC2 targets. Bug: 38151478 Bug: 37978067 Test: manual Change-Id: I8858fc46de1fc6facded219740b931c6486e317e --- services/surfaceflinger/Layer.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index 06a0765719..fe16b763c2 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -296,6 +296,11 @@ void Layer::onRemoved() { } mSurfaceFlingerConsumer->abandon(); + +#ifdef USE_HWC2 + clearHwcLayers(); +#endif + for (const auto& child : mCurrentChildren) { child->onRemoved(); } -- 2.11.0