From dc2342dc68bb6860bf8dd179b3383660eadb8c8d Mon Sep 17 00:00:00 2001 From: Beth Thibodeau Date: Thu, 13 Apr 2023 19:48:58 -0500 Subject: [PATCH] Add trace for seekbar updates Bug: 268128215 Test: capture trace - verify new section is present Change-Id: Ieae780db67c8fb18caaa115912d4f9f9556fa93f --- .../media/controls/models/player/SeekBarViewModel.kt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/models/player/SeekBarViewModel.kt b/packages/SystemUI/src/com/android/systemui/media/controls/models/player/SeekBarViewModel.kt index 2509f21242cdd..0ffd08b380a59 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/models/player/SeekBarViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/media/controls/models/player/SeekBarViewModel.kt @@ -20,6 +20,7 @@ import android.media.MediaMetadata import android.media.session.MediaController import android.media.session.PlaybackState import android.os.SystemClock +import android.os.Trace import android.view.GestureDetector import android.view.MotionEvent import android.view.View @@ -40,6 +41,8 @@ import javax.inject.Inject private const val POSITION_UPDATE_INTERVAL_MILLIS = 100L private const val MIN_FLING_VELOCITY_SCALE_FACTOR = 10 +private const val TRACE_POSITION_NAME = "SeekBarPollingPosition" + private fun PlaybackState.isInMotion(): Boolean { return this.state == PlaybackState.STATE_PLAYING || this.state == PlaybackState.STATE_FAST_FORWARDING || @@ -295,14 +298,20 @@ constructor( @WorkerThread private fun checkIfPollingNeeded() { val needed = listening && !scrubbing && playbackState?.isInMotion() ?: false + val traceCookie = controller?.sessionToken.hashCode() if (needed) { if (cancel == null) { - cancel = + Trace.beginAsyncSection(TRACE_POSITION_NAME, traceCookie) + val cancelPolling = bgExecutor.executeRepeatedly( this::checkPlaybackPosition, 0L, POSITION_UPDATE_INTERVAL_MILLIS ) + cancel = Runnable { + cancelPolling.run() + Trace.endAsyncSection(TRACE_POSITION_NAME, traceCookie) + } } } else { cancel?.run()