Merge "Add traces to aid onScreenTurnedOn latency debugging" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-02-24 17:05:05 +00:00
committed by Android (Google) Code Review
3 changed files with 18 additions and 1 deletions

View File

@@ -4,6 +4,7 @@ import android.hardware.Sensor
import android.hardware.SensorEvent import android.hardware.SensorEvent
import android.hardware.SensorEventListener import android.hardware.SensorEventListener
import android.hardware.SensorManager import android.hardware.SensorManager
import android.os.Trace
import androidx.core.util.Consumer import androidx.core.util.Consumer
internal class HingeSensorAngleProvider(private val sensorManager: SensorManager) : internal class HingeSensorAngleProvider(private val sensorManager: SensorManager) :
@@ -13,8 +14,10 @@ internal class HingeSensorAngleProvider(private val sensorManager: SensorManager
private val listeners: MutableList<Consumer<Float>> = arrayListOf() private val listeners: MutableList<Consumer<Float>> = arrayListOf()
override fun start() { override fun start() {
Trace.beginSection("HingeSensorAngleProvider#start")
val sensor = sensorManager.getDefaultSensor(Sensor.TYPE_HINGE_ANGLE) val sensor = sensorManager.getDefaultSensor(Sensor.TYPE_HINGE_ANGLE)
sensorManager.registerListener(sensorListener, sensor, SensorManager.SENSOR_DELAY_FASTEST) sensorManager.registerListener(sensorListener, sensor, SensorManager.SENSOR_DELAY_FASTEST)
Trace.endSection()
} }
override fun stop() { override fun stop() {

View File

@@ -26,6 +26,7 @@ import android.hardware.display.DisplayManager;
import android.media.MediaRouter; import android.media.MediaRouter;
import android.media.MediaRouter.RouteInfo; import android.media.MediaRouter.RouteInfo;
import android.os.Bundle; import android.os.Bundle;
import android.os.Trace;
import android.util.Log; import android.util.Log;
import android.util.SparseArray; import android.util.SparseArray;
import android.view.Display; import android.view.Display;
@@ -67,11 +68,14 @@ public class KeyguardDisplayManager {
@Override @Override
public void onDisplayAdded(int displayId) { public void onDisplayAdded(int displayId) {
Trace.beginSection(
"KeyguardDisplayManager#onDisplayAdded(displayId=" + displayId + ")");
final Display display = mDisplayService.getDisplay(displayId); final Display display = mDisplayService.getDisplay(displayId);
if (mShowing) { if (mShowing) {
updateNavigationBarVisibility(displayId, false /* navBarVisible */); updateNavigationBarVisibility(displayId, false /* navBarVisible */);
showPresentation(display); showPresentation(display);
} }
Trace.endSection();
} }
@Override @Override
@@ -81,7 +85,10 @@ public class KeyguardDisplayManager {
@Override @Override
public void onDisplayRemoved(int displayId) { public void onDisplayRemoved(int displayId) {
Trace.beginSection(
"KeyguardDisplayManager#onDisplayRemoved(displayId=" + displayId + ")");
hidePresentation(displayId); hidePresentation(displayId);
Trace.endSection();
} }
}; };

View File

@@ -18,8 +18,8 @@ package com.android.systemui.keyguard;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.os.PowerManager;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.Trace;
import android.util.Log; import android.util.Log;
import com.android.internal.policy.IKeyguardDrawnCallback; import com.android.internal.policy.IKeyguardDrawnCallback;
@@ -83,6 +83,11 @@ public class KeyguardLifecyclesDispatcher {
final Object obj = msg.obj; final Object obj = msg.obj;
switch (msg.what) { switch (msg.what) {
case SCREEN_TURNING_ON: case SCREEN_TURNING_ON:
Trace.beginSection("KeyguardLifecyclesDispatcher#SCREEN_TURNING_ON");
final String onDrawWaitingTraceTag =
"Waiting for KeyguardDrawnCallback#onDrawn";
int traceCookie = System.identityHashCode(msg);
Trace.beginAsyncSection(onDrawWaitingTraceTag, traceCookie);
// Ensure the drawn callback is only ever called once // Ensure the drawn callback is only ever called once
mScreenLifecycle.dispatchScreenTurningOn(new Runnable() { mScreenLifecycle.dispatchScreenTurningOn(new Runnable() {
boolean mInvoked; boolean mInvoked;
@@ -92,6 +97,7 @@ public class KeyguardLifecyclesDispatcher {
if (!mInvoked) { if (!mInvoked) {
mInvoked = true; mInvoked = true;
try { try {
Trace.endAsyncSection(onDrawWaitingTraceTag, traceCookie);
((IKeyguardDrawnCallback) obj).onDrawn(); ((IKeyguardDrawnCallback) obj).onDrawn();
} catch (RemoteException e) { } catch (RemoteException e) {
Log.w(TAG, "Exception calling onDrawn():", e); Log.w(TAG, "Exception calling onDrawn():", e);
@@ -101,6 +107,7 @@ public class KeyguardLifecyclesDispatcher {
} }
} }
}); });
Trace.endSection();
break; break;
case SCREEN_TURNED_ON: case SCREEN_TURNED_ON:
mScreenLifecycle.dispatchScreenTurnedOn(); mScreenLifecycle.dispatchScreenTurnedOn();