Skip to content

Commit 2027b6d

Browse files
Add conditional guard to prevent useVideoAndSubtitles overwriting recovery position that was set in Player.handleIntent for RESUME_PLAYBACK when resuming playback
(cherry picked from commit 118def0)
1 parent 90d5d5f commit 2027b6d

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

app/src/main/java/org/schabi/newpipe/player/Player.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2210,13 +2210,24 @@ public void useVideoAndSubtitles(final boolean videoAndSubtitlesEnabled) {
22102210

22112211
isAudioOnly = !videoAndSubtitlesEnabled;
22122212

2213+
final var item = playQueue.getItem();
2214+
final boolean hasPendingRecovery =
2215+
item != null && item.getRecoveryPosition() != PlayQueueItem.RECOVERY_UNSET;
2216+
final boolean hasTimeline =
2217+
!exoPlayerIsNull() && !simpleExoPlayer.getCurrentTimeline().isEmpty();
2218+
2219+
22132220
getCurrentStreamInfo().ifPresentOrElse(info -> {
22142221
// In case we don't know the source type, fall back to either video-with-audio, or
22152222
// audio-only source type
22162223
final SourceType sourceType = videoResolver.getStreamSourceType()
22172224
.orElse(SourceType.VIDEO_WITH_AUDIO_OR_AUDIO_ONLY);
22182225

22192226
setRecovery(); // making sure to save playback position before reloadPlayQueueManager()
2227+
if (hasTimeline || !hasPendingRecovery) {
2228+
// making sure to save playback position before reloadPlayQueueManager()
2229+
setRecovery();
2230+
}
22202231

22212232
if (playQueueManagerReloadingNeeded(sourceType, info, getVideoRendererIndex())) {
22222233
reloadPlayQueueManager();
@@ -2230,6 +2241,10 @@ The current metadata may be null sometimes (for e.g. when using an unstable conn
22302241
index of the video renderer or playQueueManagerReloadingNeeded returns true
22312242
*/
22322243
setRecovery(); // making sure to save playback position before reloadPlayQueueManager()
2244+
if (hasTimeline || !hasPendingRecovery) {
2245+
// making sure to save playback position before reloadPlayQueueManager()
2246+
setRecovery();
2247+
}
22332248
reloadPlayQueueManager();
22342249
});
22352250

0 commit comments

Comments
 (0)