summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/input/InputManagerService.java17
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