Loading packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt +4 −3 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.systemui.util.animation.UniqueObjectHostView import com.android.systemui.util.animation.requiresRemeasuring import com.android.systemui.util.concurrency.DelayableExecutor import com.android.systemui.util.time.SystemClock import com.android.systemui.util.traceSection import java.io.PrintWriter import java.util.TreeMap import javax.inject.Inject Loading Loading @@ -425,7 +426,7 @@ class MediaCarouselController @Inject constructor( oldKey: String?, data: MediaData, isSsReactivated: Boolean ): Boolean { ): Boolean = traceSection("MediaCarouselController#addOrUpdatePlayer") { MediaPlayerData.moveIfExists(oldKey, key) val existingPlayer = MediaPlayerData.getMediaPlayer(key) val curVisibleMediaKey = MediaPlayerData.playerKeys() Loading Loading @@ -471,7 +472,7 @@ class MediaCarouselController @Inject constructor( key: String, data: SmartspaceMediaData, shouldPrioritize: Boolean ) { ) = traceSection("MediaCarouselController#addSmartspaceMediaRecommendations") { if (DEBUG) Log.d(TAG, "Updating smartspace target in carousel") if (MediaPlayerData.getMediaPlayer(key) != null) { Log.w(TAG, "Skip adding smartspace target in carousel") Loading Loading @@ -698,7 +699,7 @@ class MediaCarouselController @Inject constructor( animate: Boolean, duration: Long = 200, startDelay: Long = 0 ) { ) = traceSection("MediaCarouselController#onDesiredLocationChanged") { desiredHostState?.let { if (this.desiredLocation != desiredLocation) { // Only log an event when location changes Loading packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +20 −4 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import android.app.WallpaperColors; import android.app.smartspace.SmartspaceAction; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.ColorStateList; Loading @@ -45,6 +44,7 @@ import android.media.session.MediaController; import android.media.session.MediaSession; import android.media.session.PlaybackState; import android.os.Process; import android.os.Trace; import android.text.TextUtils; import android.util.Log; import android.util.Pair; Loading Loading @@ -397,6 +397,7 @@ public class MediaControlPanel { if (mMediaViewHolder == null) { return; } Trace.beginSection("MediaControlPanel#bindPlayer<" + key + ">"); mKey = key; mMediaData = data; MediaSession.Token token = data.getToken(); Loading Loading @@ -455,7 +456,7 @@ public class MediaControlPanel { bindActionButtons(data); boolean isSongUpdated = bindSongMetadata(data); bindArtworkAndColors(data, isSongUpdated); bindArtworkAndColors(data, key, isSongUpdated); // TODO: We don't need to refresh this state constantly, only if the state actually changed // to something which might impact the measurement Loading @@ -463,6 +464,7 @@ public class MediaControlPanel { if (!mMetadataAnimationHandler.isRunning()) { mMediaViewController.refreshState(); } Trace.endSection(); } private void bindOutputSwitcherChip(MediaData data) { Loading Loading @@ -607,7 +609,11 @@ public class MediaControlPanel { mRecommendationViewHolder.getRecommendations().setContentDescription(contentDescription); } private void bindArtworkAndColors(MediaData data, boolean updateBackground) { private void bindArtworkAndColors(MediaData data, String key, boolean updateBackground) { final int traceCookie = data.hashCode(); final String traceName = "MediaControlPanel#bindArtworkAndColors<" + key + ">"; Trace.beginAsyncSection(traceName, traceCookie); final int reqId = mArtworkNextBindRequestId++; if (updateBackground) { mIsArtworkBound = false; Loading Loading @@ -648,7 +654,10 @@ public class MediaControlPanel { final ColorScheme colorScheme = mutableColorScheme; mMainExecutor.execute(() -> { // Cancel the request if a later one arrived first if (reqId < mArtworkBoundId) return; if (reqId < mArtworkBoundId) { Trace.endAsyncSection(traceName, traceCookie); return; } mArtworkBoundId = reqId; // Bind the album view to the artwork or a transition drawable Loading Loading @@ -698,6 +707,7 @@ public class MediaControlPanel { appIconView.setImageResource(R.drawable.ic_music_note); } } Trace.endAsyncSection(traceName, traceCookie); }); }); } Loading Loading @@ -990,6 +1000,9 @@ public class MediaControlPanel { return; } Trace.beginSection( "MediaControlPanel#bindRecommendation<" + data.getPackageName() + ">"); mRecommendationData = data; mSmartspaceId = SmallHash.hash(data.getTargetId()); mPackageName = data.getPackageName(); Loading @@ -1003,12 +1016,14 @@ public class MediaControlPanel { mUid = applicationInfo.uid; } catch (PackageManager.NameNotFoundException e) { Log.w(TAG, "Fail to get media recommendation's app info", e); Trace.endSection(); return; } CharSequence appName = data.getAppName(mContext); if (appName == null) { Log.w(TAG, "Fail to get media recommendation's app name"); Trace.endSection(); return; } Loading Loading @@ -1123,6 +1138,7 @@ public class MediaControlPanel { if (mMetadataAnimationHandler == null || !mMetadataAnimationHandler.isRunning()) { mMediaViewController.refreshState(); } Trace.endSection(); } private void fetchAndUpdateRecommendationColors(Drawable appIcon) { Loading packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt +6 −1 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ import com.android.systemui.util.Assert import com.android.systemui.util.Utils import com.android.systemui.util.concurrency.DelayableExecutor import com.android.systemui.util.time.SystemClock import com.android.systemui.util.traceSection import java.io.IOException import java.io.PrintWriter import java.util.concurrent.Executor Loading Loading @@ -1031,7 +1032,11 @@ class MediaDataManager( ) } fun onMediaDataLoaded(key: String, oldKey: String?, data: MediaData) { fun onMediaDataLoaded( key: String, oldKey: String?, data: MediaData ) = traceSection("MediaDataManager#onMediaDataLoaded") { Assert.isMainThread() if (mediaEntries.containsKey(key)) { // Otherwise this was removed already Loading packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt +10 −4 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.util.LargeScreenUtils import com.android.systemui.util.animation.UniqueObjectHostView import com.android.systemui.util.traceSection import javax.inject.Inject /** Loading Loading @@ -582,7 +583,7 @@ class MediaHierarchyManager @Inject constructor( private fun updateDesiredLocation( forceNoAnimation: Boolean = false, forceStateUpdate: Boolean = false ) { ) = traceSection("MediaHierarchyManager#updateDesiredLocation") { val desiredLocation = calculateLocation() if (desiredLocation != this.desiredLocation || forceStateUpdate) { if (this.desiredLocation >= 0 && desiredLocation != this.desiredLocation) { Loading Loading @@ -616,7 +617,10 @@ class MediaHierarchyManager @Inject constructor( } } private fun performTransitionToNewLocation(isNewView: Boolean, animate: Boolean) { private fun performTransitionToNewLocation( isNewView: Boolean, animate: Boolean ) = traceSection("MediaHierarchyManager#performTransitionToNewLocation") { if (previousLocation < 0 || isNewView) { cancelAnimationAndApplyDesiredState() return Loading Loading @@ -899,7 +903,7 @@ class MediaHierarchyManager @Inject constructor( alpha: Float, immediately: Boolean = false, clipBounds: Rect = EMPTY_RECT ) { ) = traceSection("MediaHierarchyManager#applyState") { currentBounds.set(bounds) currentClipping = clipBounds carouselAlpha = if (isCurrentlyFading()) alpha else 1.0f Loading @@ -922,7 +926,9 @@ class MediaHierarchyManager @Inject constructor( } } private fun updateHostAttachment() { private fun updateHostAttachment() = traceSection( "MediaHierarchyManager#updateHostAttachment" ) { var newLocation = resolveLocationForFading() var canUseOverlay = !isCurrentlyFading() if (isCrossFadeAnimatorRunning) { Loading packages/SystemUI/src/com/android/systemui/media/MediaHostStatesManager.kt +6 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.media import com.android.systemui.dagger.SysUISingleton import com.android.systemui.util.animation.MeasurementOutput import com.android.systemui.util.traceSection import javax.inject.Inject /** Loading Loading @@ -46,7 +47,10 @@ class MediaHostStatesManager @Inject constructor() { * Notify that a media state for a given location has changed. Should only be called from * Media hosts themselves. */ fun updateHostState(@MediaLocation location: Int, hostState: MediaHostState) { fun updateHostState( @MediaLocation location: Int, hostState: MediaHostState ) = traceSection("MediaHostStatesManager#updateHostState") { val currentState = mediaHostStates.get(location) if (!hostState.equals(currentState)) { val newState = hostState.copy() Loading @@ -71,7 +75,7 @@ class MediaHostStatesManager @Inject constructor() { fun updateCarouselDimensions( @MediaLocation location: Int, hostState: MediaHostState ): MeasurementOutput { ): MeasurementOutput = traceSection("MediaHostStatesManager#updateCarouselDimensions") { val result = MeasurementOutput(0, 0) for (controller in controllers) { val measurement = controller.getMeasurementsForState(hostState) Loading Loading
packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt +4 −3 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import com.android.systemui.util.animation.UniqueObjectHostView import com.android.systemui.util.animation.requiresRemeasuring import com.android.systemui.util.concurrency.DelayableExecutor import com.android.systemui.util.time.SystemClock import com.android.systemui.util.traceSection import java.io.PrintWriter import java.util.TreeMap import javax.inject.Inject Loading Loading @@ -425,7 +426,7 @@ class MediaCarouselController @Inject constructor( oldKey: String?, data: MediaData, isSsReactivated: Boolean ): Boolean { ): Boolean = traceSection("MediaCarouselController#addOrUpdatePlayer") { MediaPlayerData.moveIfExists(oldKey, key) val existingPlayer = MediaPlayerData.getMediaPlayer(key) val curVisibleMediaKey = MediaPlayerData.playerKeys() Loading Loading @@ -471,7 +472,7 @@ class MediaCarouselController @Inject constructor( key: String, data: SmartspaceMediaData, shouldPrioritize: Boolean ) { ) = traceSection("MediaCarouselController#addSmartspaceMediaRecommendations") { if (DEBUG) Log.d(TAG, "Updating smartspace target in carousel") if (MediaPlayerData.getMediaPlayer(key) != null) { Log.w(TAG, "Skip adding smartspace target in carousel") Loading Loading @@ -698,7 +699,7 @@ class MediaCarouselController @Inject constructor( animate: Boolean, duration: Long = 200, startDelay: Long = 0 ) { ) = traceSection("MediaCarouselController#onDesiredLocationChanged") { desiredHostState?.let { if (this.desiredLocation != desiredLocation) { // Only log an event when location changes Loading
packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +20 −4 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import android.app.WallpaperColors; import android.app.smartspace.SmartspaceAction; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.ColorStateList; Loading @@ -45,6 +44,7 @@ import android.media.session.MediaController; import android.media.session.MediaSession; import android.media.session.PlaybackState; import android.os.Process; import android.os.Trace; import android.text.TextUtils; import android.util.Log; import android.util.Pair; Loading Loading @@ -397,6 +397,7 @@ public class MediaControlPanel { if (mMediaViewHolder == null) { return; } Trace.beginSection("MediaControlPanel#bindPlayer<" + key + ">"); mKey = key; mMediaData = data; MediaSession.Token token = data.getToken(); Loading Loading @@ -455,7 +456,7 @@ public class MediaControlPanel { bindActionButtons(data); boolean isSongUpdated = bindSongMetadata(data); bindArtworkAndColors(data, isSongUpdated); bindArtworkAndColors(data, key, isSongUpdated); // TODO: We don't need to refresh this state constantly, only if the state actually changed // to something which might impact the measurement Loading @@ -463,6 +464,7 @@ public class MediaControlPanel { if (!mMetadataAnimationHandler.isRunning()) { mMediaViewController.refreshState(); } Trace.endSection(); } private void bindOutputSwitcherChip(MediaData data) { Loading Loading @@ -607,7 +609,11 @@ public class MediaControlPanel { mRecommendationViewHolder.getRecommendations().setContentDescription(contentDescription); } private void bindArtworkAndColors(MediaData data, boolean updateBackground) { private void bindArtworkAndColors(MediaData data, String key, boolean updateBackground) { final int traceCookie = data.hashCode(); final String traceName = "MediaControlPanel#bindArtworkAndColors<" + key + ">"; Trace.beginAsyncSection(traceName, traceCookie); final int reqId = mArtworkNextBindRequestId++; if (updateBackground) { mIsArtworkBound = false; Loading Loading @@ -648,7 +654,10 @@ public class MediaControlPanel { final ColorScheme colorScheme = mutableColorScheme; mMainExecutor.execute(() -> { // Cancel the request if a later one arrived first if (reqId < mArtworkBoundId) return; if (reqId < mArtworkBoundId) { Trace.endAsyncSection(traceName, traceCookie); return; } mArtworkBoundId = reqId; // Bind the album view to the artwork or a transition drawable Loading Loading @@ -698,6 +707,7 @@ public class MediaControlPanel { appIconView.setImageResource(R.drawable.ic_music_note); } } Trace.endAsyncSection(traceName, traceCookie); }); }); } Loading Loading @@ -990,6 +1000,9 @@ public class MediaControlPanel { return; } Trace.beginSection( "MediaControlPanel#bindRecommendation<" + data.getPackageName() + ">"); mRecommendationData = data; mSmartspaceId = SmallHash.hash(data.getTargetId()); mPackageName = data.getPackageName(); Loading @@ -1003,12 +1016,14 @@ public class MediaControlPanel { mUid = applicationInfo.uid; } catch (PackageManager.NameNotFoundException e) { Log.w(TAG, "Fail to get media recommendation's app info", e); Trace.endSection(); return; } CharSequence appName = data.getAppName(mContext); if (appName == null) { Log.w(TAG, "Fail to get media recommendation's app name"); Trace.endSection(); return; } Loading Loading @@ -1123,6 +1138,7 @@ public class MediaControlPanel { if (mMetadataAnimationHandler == null || !mMetadataAnimationHandler.isRunning()) { mMediaViewController.refreshState(); } Trace.endSection(); } private void fetchAndUpdateRecommendationColors(Drawable appIcon) { Loading
packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt +6 −1 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ import com.android.systemui.util.Assert import com.android.systemui.util.Utils import com.android.systemui.util.concurrency.DelayableExecutor import com.android.systemui.util.time.SystemClock import com.android.systemui.util.traceSection import java.io.IOException import java.io.PrintWriter import java.util.concurrent.Executor Loading Loading @@ -1031,7 +1032,11 @@ class MediaDataManager( ) } fun onMediaDataLoaded(key: String, oldKey: String?, data: MediaData) { fun onMediaDataLoaded( key: String, oldKey: String?, data: MediaData ) = traceSection("MediaDataManager#onMediaDataLoaded") { Assert.isMainThread() if (mediaEntries.containsKey(key)) { // Otherwise this was removed already Loading
packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt +10 −4 Original line number Diff line number Diff line Loading @@ -45,6 +45,7 @@ import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.util.LargeScreenUtils import com.android.systemui.util.animation.UniqueObjectHostView import com.android.systemui.util.traceSection import javax.inject.Inject /** Loading Loading @@ -582,7 +583,7 @@ class MediaHierarchyManager @Inject constructor( private fun updateDesiredLocation( forceNoAnimation: Boolean = false, forceStateUpdate: Boolean = false ) { ) = traceSection("MediaHierarchyManager#updateDesiredLocation") { val desiredLocation = calculateLocation() if (desiredLocation != this.desiredLocation || forceStateUpdate) { if (this.desiredLocation >= 0 && desiredLocation != this.desiredLocation) { Loading Loading @@ -616,7 +617,10 @@ class MediaHierarchyManager @Inject constructor( } } private fun performTransitionToNewLocation(isNewView: Boolean, animate: Boolean) { private fun performTransitionToNewLocation( isNewView: Boolean, animate: Boolean ) = traceSection("MediaHierarchyManager#performTransitionToNewLocation") { if (previousLocation < 0 || isNewView) { cancelAnimationAndApplyDesiredState() return Loading Loading @@ -899,7 +903,7 @@ class MediaHierarchyManager @Inject constructor( alpha: Float, immediately: Boolean = false, clipBounds: Rect = EMPTY_RECT ) { ) = traceSection("MediaHierarchyManager#applyState") { currentBounds.set(bounds) currentClipping = clipBounds carouselAlpha = if (isCurrentlyFading()) alpha else 1.0f Loading @@ -922,7 +926,9 @@ class MediaHierarchyManager @Inject constructor( } } private fun updateHostAttachment() { private fun updateHostAttachment() = traceSection( "MediaHierarchyManager#updateHostAttachment" ) { var newLocation = resolveLocationForFading() var canUseOverlay = !isCurrentlyFading() if (isCrossFadeAnimatorRunning) { Loading
packages/SystemUI/src/com/android/systemui/media/MediaHostStatesManager.kt +6 −2 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.media import com.android.systemui.dagger.SysUISingleton import com.android.systemui.util.animation.MeasurementOutput import com.android.systemui.util.traceSection import javax.inject.Inject /** Loading Loading @@ -46,7 +47,10 @@ class MediaHostStatesManager @Inject constructor() { * Notify that a media state for a given location has changed. Should only be called from * Media hosts themselves. */ fun updateHostState(@MediaLocation location: Int, hostState: MediaHostState) { fun updateHostState( @MediaLocation location: Int, hostState: MediaHostState ) = traceSection("MediaHostStatesManager#updateHostState") { val currentState = mediaHostStates.get(location) if (!hostState.equals(currentState)) { val newState = hostState.copy() Loading @@ -71,7 +75,7 @@ class MediaHostStatesManager @Inject constructor() { fun updateCarouselDimensions( @MediaLocation location: Int, hostState: MediaHostState ): MeasurementOutput { ): MeasurementOutput = traceSection("MediaHostStatesManager#updateCarouselDimensions") { val result = MeasurementOutput(0, 0) for (controller in controllers) { val measurement = controller.getMeasurementsForState(hostState) Loading