From 604c12c06dc4ffccf26945753916257e2f033f0e Mon Sep 17 00:00:00 2001 From: Yifan Hong Date: Mon, 20 Mar 2017 10:57:44 -0700 Subject: StartHidlServices wait for StartSensorService. Otherwise, StartHidlServices waits for more than a second while holding a lock, delaying window manager. Test: boots Test: SystemServerTiming_StartWindowManagerService does not regress Logcat shows: SystemServerTimingAsync: StartSensorService took to complete: 55ms SystemServerTiming: StartWindowManagerService took to complete: 81ms SystemServerTiming: StartHidlServices took to complete: 1ms Test: lshal shows android.frameworks.sensorservice@1.0::ISensorManager Bug: 36389997 Change-Id: Iab5cf0ad7059cf9736cc7db0567dff51cc427b58 --- services/java/com/android/server/SystemServer.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index e6e02428ae63..27274653f760 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -619,7 +619,6 @@ public final class SystemServer { startSensorService(); traceLog.traceEnd(); }, START_SENSOR_SERVICE); - } /** @@ -647,14 +646,6 @@ public final class SystemServer { traceBeginAndSlog("StartWebViewUpdateService"); mWebViewUpdateService = mSystemServiceManager.startService(WebViewUpdateService.class); traceEnd(); - - // Start receiving calls from HIDL services. Start in in a separate thread - // because it need to connect to SensorManager. - SystemServerInitThreadPool.get().submit(() -> { - traceBeginAndSlog(START_HIDL_SERVICES); - startHidlServices(); - traceEnd(); - }, START_HIDL_SERVICES); } /** @@ -813,6 +804,15 @@ public final class SystemServer { ServiceManager.addService(Context.INPUT_SERVICE, inputManager); traceEnd(); + // Start receiving calls from HIDL services. Start in in a separate thread + // because it need to connect to SensorManager. This have to start + // after START_SENSOR_SERVICE is done. + SystemServerInitThreadPool.get().submit(() -> { + traceBeginAndSlog(START_HIDL_SERVICES); + startHidlServices(); + traceEnd(); + }, START_HIDL_SERVICES); + if (!disableVrManager) { traceBeginAndSlog("StartVrManagerService"); mSystemServiceManager.startService(VrManagerService.class); -- cgit v1.2.3-59-g8ed1b