From cb1887ecf9e1fc6e45b8cf806c4f73179c2fdee2 Mon Sep 17 00:00:00 2001 From: Chong Zhang Date: Wed, 4 Nov 2015 20:59:26 -0800 Subject: [PATCH] Destroy dimLayer surface in removeDimLayerUser() if it is not fullscreen. For a non-fullscreen dimLayerUser, its dimLayer surface is not shared with other dimLayerUsers and should be destroyed when we remove it from mState. Change-Id: Iaf300178c2534b87fccca99a836ae3416605c9ca --- services/core/java/com/android/server/wm/DimLayerController.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/DimLayerController.java b/services/core/java/com/android/server/wm/DimLayerController.java index 67576baa7ef1..921d27cebe60 100644 --- a/services/core/java/com/android/server/wm/DimLayerController.java +++ b/services/core/java/com/android/server/wm/DimLayerController.java @@ -270,7 +270,14 @@ class DimLayerController { } void removeDimLayerUser(DimLayer.DimLayerUser dimLayerUser) { - mState.remove(dimLayerUser); + DimLayerState state = mState.get(dimLayerUser); + if (state != null) { + // Destroy the surface, unless it's the shared fullscreen dim. + if (state.dimLayer != mSharedFullScreenDimLayer) { + state.dimLayer.destroySurface(); + } + mState.remove(dimLayerUser); + } } void applyDimBehind(DimLayer.DimLayerUser dimLayerUser, WindowStateAnimator animator) { -- 2.11.0