Fix glitch with switching users from QuickSettings

Since keyguard and systemui were merged into the same process to save
memory, they share the same Looper and graphics context.  As a result,
there's no way to allow concurrent animation while keyguard inflates.
The workaround is to add a slight delay to allow the animation to finish.

Workaround for bug 11046339

Change-Id: I355ca4fb325312bae87d587acfb12b475ecdeba4
This commit is contained in:
Jim Miller
2013-10-30 15:23:46 -07:00
parent 73f68dbcc6
commit 8a26b43cd8

View File

@@ -314,11 +314,19 @@ class QuickSettings {
collapsePanels();
final UserManager um = UserManager.get(mContext);
if (um.getUsers(true).size() > 1) {
try {
WindowManagerGlobal.getWindowManagerService().lockNow(null);
} catch (RemoteException e) {
Log.e(TAG, "Couldn't show user switcher", e);
}
// Since keyguard and systemui were merged into the same process to save
// memory, they share the same Looper and graphics context. As a result,
// there's no way to allow concurrent animation while keyguard inflates.
// The workaround is to add a slight delay to allow the animation to finish.
mHandler.postDelayed(new Runnable() {
public void run() {
try {
WindowManagerGlobal.getWindowManagerService().lockNow(null);
} catch (RemoteException e) {
Log.e(TAG, "Couldn't show user switcher", e);
}
}
}, 400); // TODO: ideally this would be tied to the collapse of the panel
} else {
Intent intent = ContactsContract.QuickContact.composeQuickContactsIntent(
mContext, v, ContactsContract.Profile.CONTENT_URI,