Merge "Revert "Remove lousy synchronization"" into qt-dev

This commit is contained in:
TreeHugger Robot
2019-05-14 22:49:27 +00:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 15 deletions

View File

@@ -1608,31 +1608,23 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
} }
private boolean shouldListenForFingerprint() { private boolean shouldListenForFingerprint() {
final boolean switchingUsers;
synchronized (this) {
switchingUsers = mSwitchingUser;
}
// Only listen if this KeyguardUpdateMonitor belongs to the primary user. There is an // Only listen if this KeyguardUpdateMonitor belongs to the primary user. There is an
// instance of KeyguardUpdateMonitor for each user but KeyguardUpdateMonitor is user-aware. // instance of KeyguardUpdateMonitor for each user but KeyguardUpdateMonitor is user-aware.
final boolean shouldListen = (mKeyguardIsVisible || !mDeviceInteractive || final boolean shouldListen = (mKeyguardIsVisible || !mDeviceInteractive ||
(mBouncer && !mKeyguardGoingAway) || mGoingToSleep || (mBouncer && !mKeyguardGoingAway) || mGoingToSleep ||
shouldListenForFingerprintAssistant() || (mKeyguardOccluded && mIsDreaming)) shouldListenForFingerprintAssistant() || (mKeyguardOccluded && mIsDreaming))
&& !switchingUsers && !isFingerprintDisabled(getCurrentUser()) && !mSwitchingUser && !isFingerprintDisabled(getCurrentUser())
&& (!mKeyguardGoingAway || !mDeviceInteractive) && mIsPrimaryUser; && (!mKeyguardGoingAway || !mDeviceInteractive) && mIsPrimaryUser;
return shouldListen; return shouldListen;
} }
private boolean shouldListenForFace() { private boolean shouldListenForFace() {
final boolean switchingUsers;
synchronized (this) {
switchingUsers = mSwitchingUser;
}
final boolean awakeKeyguard = mKeyguardIsVisible && mDeviceInteractive && !mGoingToSleep; final boolean awakeKeyguard = mKeyguardIsVisible && mDeviceInteractive && !mGoingToSleep;
final int user = getCurrentUser(); final int user = getCurrentUser();
// Only listen if this KeyguardUpdateMonitor belongs to the primary user. There is an // Only listen if this KeyguardUpdateMonitor belongs to the primary user. There is an
// instance of KeyguardUpdateMonitor for each user but KeyguardUpdateMonitor is user-aware. // instance of KeyguardUpdateMonitor for each user but KeyguardUpdateMonitor is user-aware.
return (mBouncer || mAuthInterruptActive || awakeKeyguard || shouldListenForFaceAssistant()) return (mBouncer || mAuthInterruptActive || awakeKeyguard || shouldListenForFaceAssistant())
&& !switchingUsers && !getUserCanSkipBouncer(user) && !isFaceDisabled(user) && !mSwitchingUser && !getUserCanSkipBouncer(user) && !isFaceDisabled(user)
&& !mKeyguardGoingAway && mFaceSettingEnabledForUser && !mKeyguardGoingAway && mFaceSettingEnabledForUser
&& mUserManager.isUserUnlocked(user) && mIsPrimaryUser; && mUserManager.isUserUnlocked(user) && mIsPrimaryUser;
} }
@@ -2188,11 +2180,13 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
sendUpdates(callback); sendUpdates(callback);
} }
public boolean isSwitchingUser() {
return mSwitchingUser;
}
@AnyThread @AnyThread
public void setSwitchingUser(boolean switching) { public void setSwitchingUser(boolean switching) {
synchronized (this) {
mSwitchingUser = switching; mSwitchingUser = switching;
}
// Since this comes in on a binder thread, we need to post if first // Since this comes in on a binder thread, we need to post if first
mHandler.post(mUpdateBiometricListeningState); mHandler.post(mUpdateBiometricListeningState);
} }

View File

@@ -41,6 +41,7 @@ import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.NotificationVisibility; import com.android.internal.statusbar.NotificationVisibility;
import com.android.internal.widget.MessagingGroup; import com.android.internal.widget.MessagingGroup;
import com.android.internal.widget.MessagingMessage; import com.android.internal.widget.MessagingMessage;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.systemui.Dependency; import com.android.systemui.Dependency;
import com.android.systemui.ForegroundServiceNotificationListener; import com.android.systemui.ForegroundServiceNotificationListener;
import com.android.systemui.InitController; import com.android.systemui.InitController;
@@ -121,6 +122,8 @@ public class StatusBarNotificationPresenter implements NotificationPresenter,
private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
private final int mMaxAllowedKeyguardNotifications; private final int mMaxAllowedKeyguardNotifications;
private final IStatusBarService mBarService; private final IStatusBarService mBarService;
private boolean mReinflateNotificationsOnUserSwitched;
private boolean mDispatchUiModeChangeOnUserSwitched;
private final UnlockMethodCache mUnlockMethodCache; private final UnlockMethodCache mUnlockMethodCache;
private TextView mNotificationPanelDebugText; private TextView mNotificationPanelDebugText;
@@ -239,12 +242,20 @@ public class StatusBarNotificationPresenter implements NotificationPresenter,
public void onDensityOrFontScaleChanged() { public void onDensityOrFontScaleChanged() {
MessagingMessage.dropCache(); MessagingMessage.dropCache();
MessagingGroup.dropCache(); MessagingGroup.dropCache();
if (!KeyguardUpdateMonitor.getInstance(mContext).isSwitchingUser()) {
updateNotificationsOnDensityOrFontScaleChanged(); updateNotificationsOnDensityOrFontScaleChanged();
} else {
mReinflateNotificationsOnUserSwitched = true;
}
} }
@Override @Override
public void onUiModeChanged() { public void onUiModeChanged() {
if (!KeyguardUpdateMonitor.getInstance(mContext).isSwitchingUser()) {
updateNotificationOnUiModeChanged(); updateNotificationOnUiModeChanged();
} else {
mDispatchUiModeChangeOnUserSwitched = true;
}
} }
@Override @Override
@@ -374,6 +385,14 @@ public class StatusBarNotificationPresenter implements NotificationPresenter,
// End old BaseStatusBar.userSwitched // End old BaseStatusBar.userSwitched
if (MULTIUSER_DEBUG) mNotificationPanelDebugText.setText("USER " + newUserId); if (MULTIUSER_DEBUG) mNotificationPanelDebugText.setText("USER " + newUserId);
mCommandQueue.animateCollapsePanels(); mCommandQueue.animateCollapsePanels();
if (mReinflateNotificationsOnUserSwitched) {
updateNotificationsOnDensityOrFontScaleChanged();
mReinflateNotificationsOnUserSwitched = false;
}
if (mDispatchUiModeChangeOnUserSwitched) {
updateNotificationOnUiModeChanged();
mDispatchUiModeChangeOnUserSwitched = false;
}
updateNotificationViews(); updateNotificationViews();
mMediaManager.clearCurrentMediaNotification(); mMediaManager.clearCurrentMediaNotification();
mShadeController.setLockscreenUser(newUserId); mShadeController.setLockscreenUser(newUserId);