1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2026-02-05 17:50:18 +00:00

Compare commits

...

5 Commits

Author SHA1 Message Date
Tobi
5112acf008 Merge pull request #13197 from TeamNewPipe/backport-13195-to-release-0.28.3
[Backport release-0.28.3] Fix 13139 resume playback
2026-02-05 08:27:48 -08:00
AbsurdlyLongUsername
fcb77fed93 Fix additional setRecovery from rebase errors
(cherry picked from commit 1554f77762)
2026-02-05 14:53:19 +00:00
AbsurdlyLongUsername
2027b6dbc7 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 118def08b4)
2026-02-05 14:53:19 +00:00
AbsurdlyLongUsername
90d5d5f4de Update useVideoAndSubtitles rename in comment
(cherry picked from commit 725cb70cbd)
2026-02-05 14:53:19 +00:00
AbsurdlyLongUsername
045e91df1c Small refactor getPlayQueueFromCache
(cherry picked from commit 5525d206dc)
2026-02-05 14:53:19 +00:00

View File

@@ -567,11 +567,7 @@ public final class Player implements PlaybackListener, Listener {
if (queueCache == null) {
return null;
}
final PlayQueue newQueue = SerializedCache.getInstance().take(queueCache, PlayQueue.class);
if (newQueue == null) {
return null;
}
return newQueue;
return SerializedCache.getInstance().take(queueCache, PlayQueue.class);
}
private void initUIsForCurrentPlayerType() {
@@ -2041,7 +2037,7 @@ public final class Player implements PlaybackListener, Listener {
// resolver was called when the app was in background, the app will only stream audio when
// the user come back to the app and will never fetch the video stream.
// Note that the video is not fetched when the app is in background because the video
// renderer is fully disabled (see useVideoSource method), except for HLS streams
// renderer is fully disabled (see useVideoAndSubtitles method), except for HLS streams
// (see https://github.com/google/ExoPlayer/issues/9282).
return videoResolver.resolve(info);
}
@@ -2214,13 +2210,23 @@ public final class Player implements PlaybackListener, Listener {
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 -> {
// In case we don't know the source type, fall back to either video-with-audio, or
// audio-only source type
final SourceType sourceType = videoResolver.getStreamSourceType()
.orElse(SourceType.VIDEO_WITH_AUDIO_OR_AUDIO_ONLY);
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())) {
reloadPlayQueueManager();
@@ -2233,7 +2239,10 @@ public final class Player implements PlaybackListener, Listener {
Reload the play queue manager in this case, which is the behavior when we don't know the
index of the video renderer or playQueueManagerReloadingNeeded returns true
*/
setRecovery(); // making sure to save playback position before reloadPlayQueueManager()
if (hasTimeline || !hasPendingRecovery) {
// making sure to save playback position before reloadPlayQueueManager()
setRecovery();
}
reloadPlayQueueManager();
});