1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2026-05-16 18:32:11 +00:00

Fix video playback when exiting popup to main screen (#13437)

Fix for the issue ( #6400 ) wrong video plays when exiting popup mode to fullscreen.
This commit is contained in:
Y2kz
2026-04-25 14:51:38 +05:30
committed by GitHub
parent c1692322bb
commit 6740af2c71
2 changed files with 28 additions and 9 deletions
@@ -205,6 +205,7 @@ public final class VideoDetailFragment
int lastStableBottomSheetState = BottomSheetBehavior.STATE_EXPANDED;
@State
protected boolean autoPlayEnabled = true;
private boolean forceFullscreen = false;
@Nullable
private StreamInfo currentInfo = null;
@@ -877,7 +878,7 @@ public final class VideoDetailFragment
}
}
if (isAutoplayEnabled()) {
if (isAutoplayEnabled() || forceFullscreen) {
openVideoPlayerAutoFullscreen();
}
}
@@ -1134,15 +1135,29 @@ public final class VideoDetailFragment
}
/**
* If the option to start directly fullscreen is enabled, calls
* {@link #openVideoPlayer(boolean)} with {@code directlyFullscreenIfApplicable = true}, so that
* if the user is not already in landscape and he has screen orientation locked the activity
* rotates and fullscreen starts. Otherwise, if the option to start directly fullscreen is
* disabled, calls {@link #openVideoPlayer(boolean)} with {@code directlyFullscreenIfApplicable
* = false}, hence preventing it from going directly fullscreen.
* If the option to start directly fullscreen is enabled, or if {@code forceFullscreen} is
* {@code true} (e.g. when switching from popup player to main player with a different video),
* calls {@link #openVideoPlayer(boolean)} with {@code directlyFullscreenIfApplicable = true},
* so that if the user is not already in landscape and he has screen orientation locked the
* activity rotates and fullscreen starts. Otherwise, if the option to start directly fullscreen
* is disabled and {@code forceFullscreen} is {@code false}, calls
* {@link #openVideoPlayer(boolean)} with {@code directlyFullscreenIfApplicable = false},
* hence preventing it from going directly fullscreen.
* {@code forceFullscreen} is reset to {@code false} after this call.
*/
public void openVideoPlayerAutoFullscreen() {
openVideoPlayer(PlayerHelper.isStartMainPlayerFullscreenEnabled(requireContext()));
openVideoPlayer(forceFullscreen
|| PlayerHelper.isStartMainPlayerFullscreenEnabled(requireContext()));
forceFullscreen = false;
}
public void setForceFullscreen(final boolean force) {
this.forceFullscreen = force;
}
@Nullable
public String getUrl() {
return url;
}
private void openNormalBackgroundPlayer(final boolean append) {
@@ -1,6 +1,7 @@
package org.schabi.newpipe.util;
import static android.text.TextUtils.isEmpty;
import android.text.TextUtils;
import static org.schabi.newpipe.util.ListHelper.getUrlAndNonTorrentStreams;
import android.annotation.SuppressLint;
@@ -430,13 +431,16 @@ public final class NavigationHelper {
final RunnableWithVideoDetailFragment onVideoDetailFragmentReady = detailFragment -> {
expandMainPlayer(detailFragment.requireActivity());
detailFragment.setAutoPlay(autoPlay);
if (switchingPlayers) {
if (switchingPlayers && TextUtils.equals(detailFragment.getUrl(), url)) {
// Situation when user switches from players to main player. All needed data is
// here, we can start watching (assuming newQueue equals playQueue).
// Starting directly in fullscreen if the previous player type was popup.
detailFragment.openVideoPlayer(playerType == PlayerType.POPUP
|| PlayerHelper.isStartMainPlayerFullscreenEnabled(context));
} else {
if (switchingPlayers && playerType == PlayerType.POPUP) {
detailFragment.setForceFullscreen(true);
}
detailFragment.selectAndLoadVideo(serviceId, url, title, playQueue);
}
detailFragment.scrollToTop();