From 169a306c2e7badac568880bd0ac1d62833f606a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Pomini?= Date: Thu, 25 May 2023 15:00:47 +0000 Subject: [PATCH] Move onKeyguardGoingAway outside ActivityManager lock MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The other events of WallpaperManagerInternal (onDisplayReady, onScreenTurningOn, onScreenTurnedOn) are also called outside lock, and only grab the WallpaperManagerService lock. We now do the same with onKeyguardGoingAway. This does not create new race issues: the event sent to the engine is anyway async. This CL fixes a deadlock: see the associated bug. Bug: 282786193 Test: treehugger Change-Id: I8c15fec587c6124ee5aadac46b8a0e1b93507921 --- .../com/android/server/wm/ActivityTaskManagerService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index cff65547c6734..358ed417f5bc0 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -3558,10 +3558,10 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { mRootWindowContainer.forAllDisplays(displayContent -> { mKeyguardController.keyguardGoingAway(displayContent.getDisplayId(), flags); }); - WallpaperManagerInternal wallpaperManagerInternal = getWallpaperManagerInternal(); - if (wallpaperManagerInternal != null) { - wallpaperManagerInternal.onKeyguardGoingAway(); - } + } + WallpaperManagerInternal wallpaperManagerInternal = getWallpaperManagerInternal(); + if (wallpaperManagerInternal != null) { + wallpaperManagerInternal.onKeyguardGoingAway(); } } finally { Binder.restoreCallingIdentity(token);