summaryrefslogtreecommitdiffstats
path: root/policy
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2012-09-19 13:28:11 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-09-19 13:28:11 -0700
commit52716deb4008da1d566dfd711edc0a9c6de5f79f (patch)
treece04a84d74a25d387cd0a96af3c465c9bd3de516 /policy
parent8f301e666873e4a9feaace38a0b184a5f3ce7003 (diff)
parentf1b674197577e815040cd75ef86d611965d603ad (diff)
downloadframeworks_base-52716deb4008da1d566dfd711edc0a9c6de5f79f.zip
frameworks_base-52716deb4008da1d566dfd711edc0a9c6de5f79f.tar.gz
frameworks_base-52716deb4008da1d566dfd711edc0a9c6de5f79f.tar.bz2
Merge "Fix deadlock in LockPatternUtils by using local id." into jb-mr1-dev
Diffstat (limited to 'policy')
-rwxr-xr-xpolicy/src/com/android/internal/policy/impl/PhoneWindowManager.java13
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java13
2 files changed, 22 insertions, 4 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
index 6c62680..7034264 100755
--- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -71,7 +71,6 @@ import android.util.EventLog;
import android.util.Log;
import android.util.Slog;
import android.util.SparseArray;
-import android.util.SparseIntArray;
import android.view.Display;
import android.view.Gravity;
import android.view.HapticFeedbackConstants;
@@ -722,6 +721,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
private final Runnable mPowerLongPress = new Runnable() {
+ @Override
public void run() {
// The context isn't read
if (mLongPressOnPowerBehavior < 0) {
@@ -4316,7 +4316,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
mLastInputMethodTargetWindow = target;
}
- public boolean canMagnifyWindow(WindowManager.LayoutParams attrs) {
+ @Override
+ public boolean canMagnifyWindowLw(WindowManager.LayoutParams attrs) {
switch (attrs.type) {
case WindowManager.LayoutParams.TYPE_INPUT_METHOD:
case WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG:
@@ -4328,6 +4329,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
return true;
}
+ @Override
+ public void setCurrentUserLw(int newUserId) {
+ if (mKeyguardMediator != null) {
+ mKeyguardMediator.setCurrentUser(newUserId);
+ }
+ }
+
+ @Override
public void dump(String prefix, PrintWriter pw, String[] args) {
pw.print(prefix); pw.print("mSafeMode="); pw.print(mSafeMode);
pw.print(" mSystemReady="); pw.print(mSystemReady);
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java
index 7f45a40..50a7134 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java
@@ -131,7 +131,7 @@ public class KeyguardViewMediator {
private static final int KEYGUARD_LOCK_AFTER_DELAY_DEFAULT = 5000;
/**
- * How long we'll wait for the {@link KeyguardViewCallback#keyguardDoneDrawing()}
+ * How long we'll wait for the {@link ViewMediatorCallback#keyguardDoneDrawing()}
* callback before unblocking a call to {@link #setKeyguardEnabled(boolean)}
* that is reenabling the keyguard.
*/
@@ -297,7 +297,7 @@ public class KeyguardViewMediator {
@Override
public void onUserSwitched(int userId) {
- mLockPatternUtils.setCurrentUser(userId);
+ // Note that the mLockPatternUtils user has already been updated from setCurrentUser.
synchronized (KeyguardViewMediator.this) {
resetStateLocked();
}
@@ -465,6 +465,7 @@ public class KeyguardViewMediator {
mLockPatternUtils = lockPatternUtils != null
? lockPatternUtils : new LockPatternUtils(mContext);
+ mLockPatternUtils.setCurrentUser(UserHandle.USER_OWNER);
WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
@@ -890,6 +891,14 @@ public class KeyguardViewMediator {
|| KeyguardUpdateMonitor.getInstance(mContext).isSimPinSecure();
}
+ /**
+ * Update the newUserId. Call while holding WindowManagerService lock.
+ * @param newUserId The id of the incoming user.
+ */
+ public void setCurrentUser(int newUserId) {
+ mLockPatternUtils.setCurrentUser(newUserId);
+ }
+
private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {