Loading services/core/java/com/android/server/am/ActivityManagerShellCommand.java +14 −3 Original line number Diff line number Diff line Loading @@ -1763,6 +1763,12 @@ final class ActivityManagerShellCommand extends ShellCommand { } private boolean switchUserAndWaitForComplete(int userId) throws RemoteException { UserInfo currentUser = mInterface.getCurrentUser(); if (currentUser != null && userId == currentUser.id) { // Already switched to the correct user, exit early. return true; } // Register switch observer. final CountDownLatch switchLatch = new CountDownLatch(1); mInterface.registerUserSwitchObserver( Loading @@ -1777,13 +1783,18 @@ final class ActivityManagerShellCommand extends ShellCommand { // Switch. boolean switched = mInterface.switchUser(userId); if (!switched) { // Switching failed, don't wait for the user switch observer. return false; } // Wait. try { switchLatch.await(USER_OPERATION_TIMEOUT_MS, TimeUnit.MILLISECONDS); switched = switchLatch.await(USER_OPERATION_TIMEOUT_MS, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { getErrPrintWriter().println("Thread interrupted unexpectedly."); getErrPrintWriter().println("Error: Thread interrupted unexpectedly."); } return switched; } Loading Loading @@ -1815,7 +1826,7 @@ final class ActivityManagerShellCommand extends ShellCommand { if (switched) { return 0; } else { pw.printf("Failed to switch to user %d\n", userId); pw.printf("Error: Failed to switch to user %d\n", userId); return 1; } } Loading Loading
services/core/java/com/android/server/am/ActivityManagerShellCommand.java +14 −3 Original line number Diff line number Diff line Loading @@ -1763,6 +1763,12 @@ final class ActivityManagerShellCommand extends ShellCommand { } private boolean switchUserAndWaitForComplete(int userId) throws RemoteException { UserInfo currentUser = mInterface.getCurrentUser(); if (currentUser != null && userId == currentUser.id) { // Already switched to the correct user, exit early. return true; } // Register switch observer. final CountDownLatch switchLatch = new CountDownLatch(1); mInterface.registerUserSwitchObserver( Loading @@ -1777,13 +1783,18 @@ final class ActivityManagerShellCommand extends ShellCommand { // Switch. boolean switched = mInterface.switchUser(userId); if (!switched) { // Switching failed, don't wait for the user switch observer. return false; } // Wait. try { switchLatch.await(USER_OPERATION_TIMEOUT_MS, TimeUnit.MILLISECONDS); switched = switchLatch.await(USER_OPERATION_TIMEOUT_MS, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { getErrPrintWriter().println("Thread interrupted unexpectedly."); getErrPrintWriter().println("Error: Thread interrupted unexpectedly."); } return switched; } Loading Loading @@ -1815,7 +1826,7 @@ final class ActivityManagerShellCommand extends ShellCommand { if (switched) { return 0; } else { pw.printf("Failed to switch to user %d\n", userId); pw.printf("Error: Failed to switch to user %d\n", userId); return 1; } } Loading