From 38067cc1c40e1b201463e7db129b4e70d2d31c5e Mon Sep 17 00:00:00 2001 From: Nicolo' Mazzucato Date: Thu, 10 Feb 2022 13:15:26 +0100 Subject: [PATCH] Add traces to latency sensitive points Those places have been identified as the main culprit of unfold latency in sysui doing some method tracing. By adding traces, we can monitor them better in perfetto recordings. Bug: 197515205 Test: recorded a trace and checked if they were there. Change-Id: I6f1d111b7fb33fabeba604e62d4208f5ca1f03d1 --- .../navigationbar/NavigationBarController.java | 3 +++ .../systemui/statusbar/StatusBarIconView.java | 4 ++++ .../systemui/statusbar/phone/StatusBar.java | 8 ++++++++ .../DeviceStateRotationLockSettingController.java | 14 ++++++++++---- .../systemui/util/wrapper/RotationPolicyWrapper.kt | 5 ++++- 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java index 98b49b1c48903..aa1117ca23f79 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java @@ -31,6 +31,7 @@ import android.hardware.display.DisplayManager; import android.os.Bundle; import android.os.Handler; import android.os.RemoteException; +import android.os.Trace; import android.os.UserHandle; import android.provider.Settings; import android.util.Log; @@ -215,9 +216,11 @@ public class NavigationBarController implements /** @return {@code true} if taskbar is enabled, false otherwise */ private boolean initializeTaskbarIfNecessary() { if (mIsTablet) { + Trace.beginSection("NavigationBarController#initializeTaskbarIfNecessary"); // Remove navigation bar when taskbar is showing removeNavigationBar(mContext.getDisplayId()); mTaskbarDelegate.init(mContext.getDisplayId()); + Trace.endSection(); } else { mTaskbarDelegate.destroy(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java index 4a7606c316e2f..e9387499cf4a0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarIconView.java @@ -37,6 +37,7 @@ import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.os.Parcelable; +import android.os.Trace; import android.os.UserHandle; import android.service.notification.StatusBarNotification; import android.text.TextUtils; @@ -370,10 +371,13 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi } Drawable drawable; try { + Trace.beginSection("StatusBarIconView#updateDrawable()"); drawable = getIcon(mIcon); } catch (OutOfMemoryError e) { Log.w(TAG, "OOM while inflating " + mIcon.icon + " for slot " + mSlot); return false; + } finally { + Trace.endSection(); } if (drawable == null) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index c8cc807475f39..8e93ad07f5c9e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -1108,6 +1108,12 @@ public class StatusBar extends CoreStartable implements } private void onFoldedStateChanged(boolean isFolded, boolean willGoToSleep) { + Trace.beginSection("StatusBar#onFoldedStateChanged"); + onFoldedStateChangedInternal(isFolded, willGoToSleep); + Trace.endSection(); + } + + private void onFoldedStateChangedInternal(boolean isFolded, boolean willGoToSleep) { // Folded state changes are followed by a screen off event. // By default turning off the screen also closes the shade. // We want to make sure that the shade status is kept after @@ -3669,6 +3675,7 @@ public class StatusBar extends CoreStartable implements @Override public void onScreenTurnedOff() { + Trace.beginSection("StatusBar#onScreenTurnedOff"); mFalsingCollector.onScreenOff(); mScrimController.onScreenTurnedOff(); if (mCloseQsBeforeScreenOff) { @@ -3676,6 +3683,7 @@ public class StatusBar extends CoreStartable implements mCloseQsBeforeScreenOff = false; } updateIsKeyguard(); + Trace.endSection(); } }; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceStateRotationLockSettingController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceStateRotationLockSettingController.java index d90363957aa9f..1d414745e6ed3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceStateRotationLockSettingController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceStateRotationLockSettingController.java @@ -21,6 +21,7 @@ import static android.provider.Settings.Secure.DEVICE_STATE_ROTATION_LOCK_LOCKED import android.annotation.Nullable; import android.hardware.devicestate.DeviceStateManager; +import android.os.Trace; import android.util.Log; import com.android.settingslib.devicestate.DeviceStateRotationLockSettingsManager; @@ -117,11 +118,16 @@ public final class DeviceStateRotationLockSettingController private void updateDeviceState(int state) { Log.v(TAG, "updateDeviceState [state=" + state + "]"); - if (mDeviceState == state) { - return; - } + Trace.beginSection("updateDeviceState [state=" + state + "]"); + try { + if (mDeviceState == state) { + return; + } - readPersistedSetting(state); + readPersistedSetting(state); + } finally { + Trace.endSection(); + } } private void readPersistedSetting(int state) { diff --git a/packages/SystemUI/src/com/android/systemui/util/wrapper/RotationPolicyWrapper.kt b/packages/SystemUI/src/com/android/systemui/util/wrapper/RotationPolicyWrapper.kt index b64d7bec184fa..d8de07d185c66 100644 --- a/packages/SystemUI/src/com/android/systemui/util/wrapper/RotationPolicyWrapper.kt +++ b/packages/SystemUI/src/com/android/systemui/util/wrapper/RotationPolicyWrapper.kt @@ -21,6 +21,7 @@ import android.provider.Settings.Secure.CAMERA_AUTOROTATE import com.android.internal.view.RotationPolicy import com.android.internal.view.RotationPolicy.RotationPolicyListener import com.android.systemui.util.settings.SecureSettings +import com.android.systemui.util.traceSection import javax.inject.Inject /** @@ -44,7 +45,9 @@ class RotationPolicyWrapperImpl @Inject constructor( RotationPolicyWrapper { override fun setRotationLock(enabled: Boolean) { - RotationPolicy.setRotationLock(context, enabled) + traceSection("RotationPolicyWrapperImpl#setRotationLock") { + RotationPolicy.setRotationLock(context, enabled) + } } override fun setRotationLockAtAngle(enabled: Boolean, rotation: Int) {