Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit df16b087 authored by Steve Elliott's avatar Steve Elliott
Browse files

Add tracing to DisplayListener impls

Flag: NA
Bug: 318020193
Test: verify traces appear in Perfetto
Change-Id: I692ac7300e324bbddcda7ebc4951be5f9e27fea5
parent e8c4c3b0
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.hardware.display.DisplayManager
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
import android.os.Handler
import android.view.DisplayInfo
import com.android.app.tracing.traceSection
import com.android.systemui.biometrics.BiometricDisplayListener.SensorType.Generic

/**
@@ -42,6 +43,7 @@ class BiometricDisplayListener(
    override fun onDisplayAdded(displayId: Int) {}
    override fun onDisplayRemoved(displayId: Int) {}
    override fun onDisplayChanged(displayId: Int) {
        traceSection({ "BiometricDisplayListener($sensorType)#onDisplayChanged" }) {
            val rotationChanged = didRotationChange()

            when (sensorType) {
@@ -53,6 +55,7 @@ class BiometricDisplayListener(
                }
            }
        }
    }

    private fun didRotationChange(): Boolean {
        val last = cachedDisplayInfo.rotation
@@ -82,8 +85,8 @@ class BiometricDisplayListener(
     * biometric prompt (and this object will likely change as multi-mode auth is added).
     */
    sealed class SensorType {
        object Generic : SensorType()
        object UnderDisplayFingerprint : SensorType()
        data object Generic : SensorType()
        data object UnderDisplayFingerprint : SensorType()
        data class SideFingerprint(
            val properties: FingerprintSensorPropertiesInternal
        ) : SensorType()
+12 −6
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.hardware.display.DisplayManager.EVENT_FLAG_DISPLAY_CHANGED
import android.os.Handler
import android.util.Size
import android.view.DisplayInfo
import com.android.app.tracing.traceSection
import com.android.internal.util.ArrayUtils
import com.android.systemui.biometrics.shared.model.DisplayRotation
import com.android.systemui.biometrics.shared.model.toDisplayRotation
@@ -130,6 +131,10 @@ constructor(
                        override fun onDisplayAdded(displayId: Int) {}

                        override fun onDisplayChanged(displayId: Int) {
                            traceSection(
                                "DisplayStateRepository" +
                                    ".currentRotationDisplayListener#onDisplayChanged"
                            ) {
                                val displayInfo = getDisplayInfo()
                                trySendWithFailureLogging(
                                    displayInfo,
@@ -138,6 +143,7 @@ constructor(
                                )
                            }
                        }
                    }
                displayManager.registerDisplayListener(
                    callback,
                    handler,
+25 −8
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.view.Display
import androidx.annotation.GuardedBy
import androidx.annotation.VisibleForTesting
import androidx.annotation.WorkerThread
import com.android.app.tracing.traceSection
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.util.Assert
import java.lang.ref.WeakReference
@@ -46,20 +47,32 @@ internal constructor(
    val displayChangedListener: DisplayManager.DisplayListener =
        object : DisplayManager.DisplayListener {
            override fun onDisplayAdded(displayId: Int) {
                traceSection(
                    "DisplayTrackerImpl.displayChangedDisplayListener#onDisplayAdded",
                ) {
                    val list = synchronized(displayCallbacks) { displayCallbacks.toList() }
                    onDisplayAdded(displayId, list)
                }
            }

            override fun onDisplayRemoved(displayId: Int) {
                traceSection(
                    "DisplayTrackerImpl.displayChangedDisplayListener#onDisplayRemoved",
                ) {
                    val list = synchronized(displayCallbacks) { displayCallbacks.toList() }
                    onDisplayRemoved(displayId, list)
                }
            }

            override fun onDisplayChanged(displayId: Int) {
                traceSection(
                    "DisplayTrackerImpl.displayChangedDisplayListener#onDisplayChanged",
                ) {
                    val list = synchronized(displayCallbacks) { displayCallbacks.toList() }
                    onDisplayChanged(displayId, list)
                }
            }
        }

    @VisibleForTesting
    val displayBrightnessChangedListener: DisplayManager.DisplayListener =
@@ -69,10 +82,14 @@ internal constructor(
            override fun onDisplayRemoved(displayId: Int) {}

            override fun onDisplayChanged(displayId: Int) {
                traceSection(
                    "DisplayTrackerImpl.displayBrightnessChangedDisplayListener#onDisplayChanged",
                ) {
                    val list = synchronized(brightnessCallbacks) { brightnessCallbacks.toList() }
                    onDisplayChanged(displayId, list)
                }
            }
        }

    override fun addDisplayChangeCallback(callback: DisplayTracker.Callback, executor: Executor) {
        synchronized(displayCallbacks) {
+9 −4
Original line number Diff line number Diff line
@@ -476,11 +476,16 @@ public class ImageWallpaper extends WallpaperService {

        @Override
        public void onDisplayChanged(int displayId) {
            Trace.beginSection("ImageWallpaper.CanvasEngine#onDisplayChanged");
            try {
                // changes the display in the color extractor
                // the new display dimensions will be used in the next color computation
                if (displayId == getDisplayContext().getDisplayId()) {
                    getDisplaySizeAndUpdateColorExtractor();
                }
            } finally {
                Trace.endSection();
            }
        }

        private void getDisplaySizeAndUpdateColorExtractor() {
+13 −7
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.Context
import android.hardware.display.DisplayManager
import android.os.Handler
import android.os.RemoteException
import android.os.Trace
import com.android.systemui.unfold.util.CallbackController
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
@@ -86,6 +87,8 @@ constructor(
    private inner class RotationDisplayListener : DisplayManager.DisplayListener {

        override fun onDisplayChanged(displayId: Int) {
            Trace.beginSection("RotationChangeProvider.RotationDisplayListener#onDisplayChanged")
            try {
                val display = context.display ?: return

                if (displayId == display.displayId) {
@@ -95,6 +98,9 @@ constructor(
                        lastRotation = currentRotation
                    }
                }
            } finally {
                Trace.endSection()
            }
        }

        override fun onDisplayAdded(displayId: Int) {}