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:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user