diff options
| -rw-r--r-- | services/core/java/com/android/server/input/InputManagerService.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java index 4454dd41a3c1..9eba926ab482 100644 --- a/services/core/java/com/android/server/input/InputManagerService.java +++ b/services/core/java/com/android/server/input/InputManagerService.java @@ -181,6 +181,7 @@ public class InputManagerService extends IInputManager.Stub private static final int MSG_RELOAD_DEVICE_ALIASES = 2; private static final int MSG_DELIVER_TABLET_MODE_CHANGED = 3; private static final int MSG_CURRENT_USER_CHANGED = 4; + private static final int MSG_SYSTEM_READY = 5; private static final int DEFAULT_VIBRATION_MAGNITUDE = 192; private static final AdditionalDisplayInputProperties @@ -564,6 +565,14 @@ public class InputManagerService extends IInputManager.Stub Watchdog.getInstance().addMonitor(this); } + private void onBootPhase(int phase) { + // On ActivityManager thread, shift to handler to avoid blocking other system services in + // this boot phase. + if (phase == SystemService.PHASE_ACTIVITY_MANAGER_READY) { + mHandler.sendEmptyMessage(MSG_SYSTEM_READY); + } + } + // TODO(BT) Pass in parameter for bluetooth system public void systemRunning() { if (DEBUG) { @@ -3220,6 +3229,9 @@ public class InputManagerService extends IInputManager.Stub case MSG_CURRENT_USER_CHANGED: handleCurrentUserChanged((int) msg.obj); break; + case MSG_SYSTEM_READY: + systemRunning(); + break; } } } @@ -3424,10 +3436,7 @@ public class InputManagerService extends IInputManager.Stub @Override public void onBootPhase(int phase) { - // Called on ActivityManager thread. - if (phase == SystemService.PHASE_ACTIVITY_MANAGER_READY) { - mService.systemRunning(); - } + mService.onBootPhase(phase); } @Override |