From 8a26b43cd83ef42aecc75590beeb37122dd5bb4b Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Wed, 30 Oct 2013 15:23:46 -0700 Subject: [PATCH] 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 --- .../statusbar/phone/QuickSettings.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java index 37504fb8e88c2..2eef2b3035db9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettings.java @@ -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,