From f459611e04143566b897c489df32e231107f77c9 Mon Sep 17 00:00:00 2001 From: andrewlewis Date: Fri, 18 May 2018 04:17:57 -0700 Subject: [PATCH] Notify consistent event information to listeners Issue: #4262 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=197126757 --- RELEASENOTES.md | 3 +++ .../main/java/com/google/android/exoplayer2/ExoPlayer.java | 4 ---- .../java/com/google/android/exoplayer2/ExoPlayerImpl.java | 6 ++++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 2238a95a158..fd20664692c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -11,6 +11,9 @@ ([#2843](https://github.com/google/ExoPlayer/issues/2843)). * Fix crash when switching surface on Moto E(4) ([#4134](https://github.com/google/ExoPlayer/issues/4134)). +* Fix a bug that could cause event listeners to be called with inconsistent + information if an event listener interacted with the player + ([#4262](https://github.com/google/ExoPlayer/issues/4262)). * Audio: * Fix extraction of PCM in MP4/MOV ([#4228](https://github.com/google/ExoPlayer/issues/4228)). diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java index 6d8dd5b7a80..39a6243933e 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java @@ -185,10 +185,6 @@ public ExoPlayerMessage(PlayerMessage.Target target, int messageType, Object mes */ Looper getPlaybackLooper(); - @Override - @Nullable - ExoPlaybackException getPlaybackError(); - /** * Prepares the player to play the provided {@link MediaSource}. Equivalent to * {@code prepare(mediaSource, true, true)}. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java index 5ca5994b6e9..4125a203a62 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java @@ -193,6 +193,7 @@ public void setPlayWhenReady(boolean playWhenReady) { if (this.playWhenReady != playWhenReady) { this.playWhenReady = playWhenReady; internalPlayer.setPlayWhenReady(playWhenReady); + PlaybackInfo playbackInfo = this.playbackInfo; for (Player.EventListener listener : listeners) { listener.onPlayerStateChanged(playWhenReady, playbackInfo.playbackState); } @@ -570,7 +571,8 @@ public Object getCurrentManifest() { } break; case ExoPlayerImplInternal.MSG_ERROR: - playbackError = (ExoPlaybackException) msg.obj; + ExoPlaybackException playbackError = (ExoPlaybackException) msg.obj; + this.playbackError = playbackError; for (Player.EventListener listener : listeners) { listener.onPlayerError(playbackError); } @@ -652,7 +654,7 @@ private void updatePlaybackInfo( boolean playbackStateChanged = playbackInfo.playbackState != newPlaybackInfo.playbackState; boolean isLoadingChanged = playbackInfo.isLoading != newPlaybackInfo.isLoading; boolean trackSelectorResultChanged = - this.playbackInfo.trackSelectorResult != newPlaybackInfo.trackSelectorResult; + playbackInfo.trackSelectorResult != newPlaybackInfo.trackSelectorResult; playbackInfo = newPlaybackInfo; if (timelineOrManifestChanged || timelineChangeReason == TIMELINE_CHANGE_REASON_PREPARED) { for (Player.EventListener listener : listeners) {