Add conditional guard to prevent useVideoAndSubtitles overwriting recovery position that was set in Player.handleIntent for RESUME_PLAYBACK when resuming playback
This commit is contained in:
parent
b7d69682f7
commit
bd255606d6
1 changed files with 15 additions and 0 deletions
|
|
@ -2210,6 +2210,13 @@ public final class Player implements PlaybackListener, Listener {
|
||||||
|
|
||||||
isAudioOnly = !videoAndSubtitlesEnabled;
|
isAudioOnly = !videoAndSubtitlesEnabled;
|
||||||
|
|
||||||
|
final var item = playQueue.getItem();
|
||||||
|
final boolean hasPendingRecovery =
|
||||||
|
item != null && item.getRecoveryPosition() != PlayQueueItem.RECOVERY_UNSET;
|
||||||
|
final boolean hasTimeline =
|
||||||
|
!exoPlayerIsNull() && !simpleExoPlayer.getCurrentTimeline().isEmpty();
|
||||||
|
|
||||||
|
|
||||||
getCurrentStreamInfo().ifPresentOrElse(info -> {
|
getCurrentStreamInfo().ifPresentOrElse(info -> {
|
||||||
// In case we don't know the source type, fall back to either video-with-audio, or
|
// In case we don't know the source type, fall back to either video-with-audio, or
|
||||||
// audio-only source type
|
// audio-only source type
|
||||||
|
|
@ -2217,6 +2224,10 @@ public final class Player implements PlaybackListener, Listener {
|
||||||
.orElse(SourceType.VIDEO_WITH_AUDIO_OR_AUDIO_ONLY);
|
.orElse(SourceType.VIDEO_WITH_AUDIO_OR_AUDIO_ONLY);
|
||||||
|
|
||||||
setRecovery(); // making sure to save playback position before reloadPlayQueueManager()
|
setRecovery(); // making sure to save playback position before reloadPlayQueueManager()
|
||||||
|
if (hasTimeline || !hasPendingRecovery) {
|
||||||
|
// making sure to save playback position before reloadPlayQueueManager()
|
||||||
|
setRecovery();
|
||||||
|
}
|
||||||
|
|
||||||
if (playQueueManagerReloadingNeeded(sourceType, info, getVideoRendererIndex())) {
|
if (playQueueManagerReloadingNeeded(sourceType, info, getVideoRendererIndex())) {
|
||||||
reloadPlayQueueManager();
|
reloadPlayQueueManager();
|
||||||
|
|
@ -2230,6 +2241,10 @@ public final class Player implements PlaybackListener, Listener {
|
||||||
index of the video renderer or playQueueManagerReloadingNeeded returns true
|
index of the video renderer or playQueueManagerReloadingNeeded returns true
|
||||||
*/
|
*/
|
||||||
setRecovery(); // making sure to save playback position before reloadPlayQueueManager()
|
setRecovery(); // making sure to save playback position before reloadPlayQueueManager()
|
||||||
|
if (hasTimeline || !hasPendingRecovery) {
|
||||||
|
// making sure to save playback position before reloadPlayQueueManager()
|
||||||
|
setRecovery();
|
||||||
|
}
|
||||||
reloadPlayQueueManager();
|
reloadPlayQueueManager();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue