From cc6366dde1776d40ab58f2475c4e1f8993253d7a Mon Sep 17 00:00:00 2001 From: tiger_huang Date: Mon, 29 Jun 2015 17:17:30 +0800 Subject: [PATCH] Use the correct lock to protect members in PolicyControl Members in PolicyControl can be accessed by multiple threads via the public functions called by PhoneWindowManager. Most of the functions are called with the window-manager-lock held, but reloadFromSetting() is an exception. In this patch, we acquire the window-manager-lock before calling reloadFromSetting() to ensure accessing the members with the same lock held. Change-Id: I54ac5cab2a2d74c568fa96145f7a6741c6d99e36 --- .../core/java/com/android/server/policy/PhoneWindowManager.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 93e1f187b5434..d31c6e9b5adde 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -1689,6 +1689,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (mImmersiveModeConfirmation != null) { mImmersiveModeConfirmation.loadSetting(mCurrentUserId); } + } + synchronized (mWindowManagerFuncs.getWindowManagerLock()) { PolicyControl.reloadFromSetting(mContext); } if (updateRotation) {