From a312f8165c84af88d62b2894730c1dbe659ba0da Mon Sep 17 00:00:00 2001 From: bepheis gao Date: Mon, 10 Aug 2020 22:20:47 +0800 Subject: [PATCH] Avoid deadlock during boot up Cp from aosp/1382500 to fix merge conflict Avoid a deadlock that may occurs during boosting time. if we are starting system ui while another thread is executing the enableScreenAfterBoot function at the same time, the deadlock occurs BUG: 162566198 Change-Id: Ief47cad91cbbc498179cd38e653bd1fa565cee2e Merged-In: Ief47cad91cbbc498179cd38e653bd1fa565cee2e --- .../server/wm/ActivityTaskManagerService.java | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index a1d0e561ff014..a96e2cb405385 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -5380,15 +5380,6 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { return mAmInternal.isBackgroundActivityStartsEnabled(); } - void enableScreenAfterBoot(boolean booted) { - writeBootProgressEnableScreen(SystemClock.uptimeMillis()); - mWindowManager.enableScreenAfterBoot(); - - synchronized (mGlobalLock) { - updateEventDispatchingLocked(booted); - } - } - static long getInputDispatchingTimeoutLocked(ActivityRecord r) { if (r == null || !r.hasProcess()) { return KEY_DISPATCHING_TIMEOUT_MS; @@ -6474,9 +6465,9 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { @Override public void enableScreenAfterBoot(boolean booted) { + writeBootProgressEnableScreen(SystemClock.uptimeMillis()); + mWindowManager.enableScreenAfterBoot(); synchronized (mGlobalLock) { - writeBootProgressEnableScreen(SystemClock.uptimeMillis()); - mWindowManager.enableScreenAfterBoot(); updateEventDispatchingLocked(booted); } }