Skip to content

Commit

Permalink
Order MediaControllerImplBase listener callbacks as in ExoPlayerImpl
Browse files Browse the repository at this point in the history
The callbacks for `PlayerInfo` changes are currently in both `MediaControllerImplBase.updatePlayerInfo` (masking) and `MediaControllerImplBase.onPlayerInfoChanged`. But the order was different between them both and `ExoPlayerImpl.updatePlaybackInfo` which they are trying to mimic.

#minor-release

PiperOrigin-RevId: 542519070
  • Loading branch information
oceanjules authored and tof-tof committed Jun 22, 2023
1 parent ca22fe7 commit b8ac5b4
Showing 1 changed file with 71 additions and 71 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2178,12 +2178,10 @@ private void updatePlayerInfo(
PlayerInfo oldPlayerInfo = this.playerInfo;
this.playerInfo = newPlayerInfo;

if (mediaItemTransition) {
if (!oldPlayerInfo.timeline.equals(newPlayerInfo.timeline)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_MEDIA_ITEM_TRANSITION,
listener ->
listener.onMediaItemTransition(
newPlayerInfo.getCurrentMediaItem(), mediaItemTransitionReason));
/* eventFlag= */ Player.EVENT_TIMELINE_CHANGED,
listener -> listener.onTimelineChanged(newPlayerInfo.timeline, timelineChangeReason));
}
if (positionDiscontinuity) {
listeners.queueEvent(
Expand All @@ -2194,10 +2192,12 @@ private void updatePlayerInfo(
newPlayerInfo.newPositionInfo,
positionDiscontinuityReason));
}
if (!oldPlayerInfo.timeline.equals(newPlayerInfo.timeline)) {
if (mediaItemTransition) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_TIMELINE_CHANGED,
listener -> listener.onTimelineChanged(newPlayerInfo.timeline, timelineChangeReason));
/* eventFlag= */ Player.EVENT_MEDIA_ITEM_TRANSITION,
listener ->
listener.onMediaItemTransition(
newPlayerInfo.getCurrentMediaItem(), mediaItemTransitionReason));
}
PlaybackException oldPlayerError = oldPlayerInfo.playerError;
PlaybackException newPlayerError = newPlayerInfo.playerError;
Expand Down Expand Up @@ -2467,6 +2467,32 @@ void onPlayerInfoChanged(PlayerInfo newPlayerInfo, BundlingExclusions bundlingEx
intersectedPlayerCommands)
.first;
PlayerInfo finalPlayerInfo = playerInfo;
if (!oldPlayerInfo.timeline.equals(finalPlayerInfo.timeline)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_TIMELINE_CHANGED,
listener ->
listener.onTimelineChanged(
finalPlayerInfo.timeline, Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE));
}
if (!oldPlayerInfo.oldPositionInfo.equals(finalPlayerInfo.oldPositionInfo)
|| !oldPlayerInfo.newPositionInfo.equals(finalPlayerInfo.newPositionInfo)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_POSITION_DISCONTINUITY,
listener ->
listener.onPositionDiscontinuity(
finalPlayerInfo.oldPositionInfo,
finalPlayerInfo.newPositionInfo,
finalPlayerInfo.discontinuityReason));
}
MediaItem oldCurrentMediaItem = oldPlayerInfo.getCurrentMediaItem();
MediaItem currentMediaItem = finalPlayerInfo.getCurrentMediaItem();
if (!Util.areEqual(oldCurrentMediaItem, currentMediaItem)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_MEDIA_ITEM_TRANSITION,
listener ->
listener.onMediaItemTransition(
currentMediaItem, finalPlayerInfo.mediaItemTransitionReason));
}
PlaybackException oldPlayerError = oldPlayerInfo.playerError;
PlaybackException playerError = finalPlayerInfo.playerError;
boolean errorsMatch =
Expand All @@ -2482,25 +2508,51 @@ void onPlayerInfoChanged(PlayerInfo newPlayerInfo, BundlingExclusions bundlingEx
listener -> listener.onPlayerError(finalPlayerInfo.playerError));
}
}
MediaItem oldCurrentMediaItem = oldPlayerInfo.getCurrentMediaItem();
MediaItem currentMediaItem = finalPlayerInfo.getCurrentMediaItem();
if (!Util.areEqual(oldCurrentMediaItem, currentMediaItem)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_MEDIA_ITEM_TRANSITION,
listener ->
listener.onMediaItemTransition(
currentMediaItem, finalPlayerInfo.mediaItemTransitionReason));
}
if (!Util.areEqual(oldPlayerInfo.currentTracks, finalPlayerInfo.currentTracks)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_TRACKS_CHANGED,
listener -> listener.onTracksChanged(finalPlayerInfo.currentTracks));
}
if (!oldPlayerInfo.mediaMetadata.equals(finalPlayerInfo.mediaMetadata)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_MEDIA_METADATA_CHANGED,
listener -> listener.onMediaMetadataChanged(finalPlayerInfo.mediaMetadata));
}
if (oldPlayerInfo.isLoading != finalPlayerInfo.isLoading) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_IS_LOADING_CHANGED,
listener -> listener.onIsLoadingChanged(finalPlayerInfo.isLoading));
}
if (oldPlayerInfo.playbackState != finalPlayerInfo.playbackState) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_PLAYBACK_STATE_CHANGED,
listener -> listener.onPlaybackStateChanged(finalPlayerInfo.playbackState));
}
if (oldPlayerInfo.playWhenReady != finalPlayerInfo.playWhenReady) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_PLAY_WHEN_READY_CHANGED,
listener ->
listener.onPlayWhenReadyChanged(
finalPlayerInfo.playWhenReady, finalPlayerInfo.playWhenReadyChangeReason));
}
if (oldPlayerInfo.playbackSuppressionReason != finalPlayerInfo.playbackSuppressionReason) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED,
listener ->
listener.onPlaybackSuppressionReasonChanged(
finalPlayerInfo.playbackSuppressionReason));
}
if (oldPlayerInfo.isPlaying != finalPlayerInfo.isPlaying) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_IS_PLAYING_CHANGED,
listener -> listener.onIsPlayingChanged(finalPlayerInfo.isPlaying));
}
if (!Util.areEqual(oldPlayerInfo.playbackParameters, finalPlayerInfo.playbackParameters)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_PLAYBACK_PARAMETERS_CHANGED,
listener -> listener.onPlaybackParametersChanged(finalPlayerInfo.playbackParameters));
}

if (oldPlayerInfo.repeatMode != finalPlayerInfo.repeatMode) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_REPEAT_MODE_CHANGED,
Expand All @@ -2511,13 +2563,6 @@ void onPlayerInfoChanged(PlayerInfo newPlayerInfo, BundlingExclusions bundlingEx
/* eventFlag= */ Player.EVENT_SHUFFLE_MODE_ENABLED_CHANGED,
listener -> listener.onShuffleModeEnabledChanged(finalPlayerInfo.shuffleModeEnabled));
}
if (!Util.areEqual(oldPlayerInfo.timeline, finalPlayerInfo.timeline)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_TIMELINE_CHANGED,
listener ->
listener.onTimelineChanged(
finalPlayerInfo.timeline, Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE));
}
if (!Util.areEqual(oldPlayerInfo.playlistMetadata, finalPlayerInfo.playlistMetadata)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_PLAYLIST_METADATA_CHANGED,
Expand Down Expand Up @@ -2554,55 +2599,11 @@ void onPlayerInfoChanged(PlayerInfo newPlayerInfo, BundlingExclusions bundlingEx
listener.onDeviceVolumeChanged(
finalPlayerInfo.deviceVolume, finalPlayerInfo.deviceMuted));
}
if (oldPlayerInfo.playWhenReady != finalPlayerInfo.playWhenReady) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_PLAY_WHEN_READY_CHANGED,
listener ->
listener.onPlayWhenReadyChanged(
finalPlayerInfo.playWhenReady, finalPlayerInfo.playWhenReadyChangeReason));
}
if (oldPlayerInfo.playbackSuppressionReason != finalPlayerInfo.playbackSuppressionReason) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_PLAYBACK_SUPPRESSION_REASON_CHANGED,
listener ->
listener.onPlaybackSuppressionReasonChanged(
finalPlayerInfo.playbackSuppressionReason));
}
if (oldPlayerInfo.playbackState != finalPlayerInfo.playbackState) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_PLAYBACK_STATE_CHANGED,
listener -> listener.onPlaybackStateChanged(finalPlayerInfo.playbackState));
}
if (oldPlayerInfo.isPlaying != finalPlayerInfo.isPlaying) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_IS_PLAYING_CHANGED,
listener -> listener.onIsPlayingChanged(finalPlayerInfo.isPlaying));
}
if (oldPlayerInfo.isLoading != finalPlayerInfo.isLoading) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_IS_LOADING_CHANGED,
listener -> listener.onIsLoadingChanged(finalPlayerInfo.isLoading));
}
if (!Util.areEqual(oldPlayerInfo.videoSize, finalPlayerInfo.videoSize)) {
if (!oldPlayerInfo.videoSize.equals(finalPlayerInfo.videoSize)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_VIDEO_SIZE_CHANGED,
listener -> listener.onVideoSizeChanged(finalPlayerInfo.videoSize));
}
if (!Util.areEqual(oldPlayerInfo.oldPositionInfo, finalPlayerInfo.oldPositionInfo)
|| !Util.areEqual(oldPlayerInfo.newPositionInfo, finalPlayerInfo.newPositionInfo)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_POSITION_DISCONTINUITY,
listener ->
listener.onPositionDiscontinuity(
finalPlayerInfo.oldPositionInfo,
finalPlayerInfo.newPositionInfo,
finalPlayerInfo.discontinuityReason));
}
if (!Util.areEqual(oldPlayerInfo.mediaMetadata, finalPlayerInfo.mediaMetadata)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_MEDIA_METADATA_CHANGED,
listener -> listener.onMediaMetadataChanged(finalPlayerInfo.mediaMetadata));
}
if (oldPlayerInfo.seekBackIncrementMs != finalPlayerInfo.seekBackIncrementMs) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_SEEK_BACK_INCREMENT_CHANGED,
Expand All @@ -2621,8 +2622,7 @@ void onPlayerInfoChanged(PlayerInfo newPlayerInfo, BundlingExclusions bundlingEx
listener.onMaxSeekToPreviousPositionChanged(
finalPlayerInfo.maxSeekToPreviousPositionMs));
}
if (!Util.areEqual(
oldPlayerInfo.trackSelectionParameters, finalPlayerInfo.trackSelectionParameters)) {
if (!oldPlayerInfo.trackSelectionParameters.equals(finalPlayerInfo.trackSelectionParameters)) {
listeners.queueEvent(
/* eventFlag= */ Player.EVENT_TRACK_SELECTION_PARAMETERS_CHANGED,
listener ->
Expand Down

0 comments on commit b8ac5b4

Please sign in to comment.