Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ protected void showStreamDialog(final StreamInfoItem item) {
}
final List<StreamDialogEntry> entries = new ArrayList<>();

if (PlayerHolder.getInstance().isPlayerOpen()) {
if (PlayerHolder.getInstance().isPlayQueueReady()) {
entries.add(StreamDialogEntry.enqueue);

if (PlayerHolder.getInstance().getQueueSize() > 1) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ protected void showStreamDialog(final StreamInfoItem item) {

final ArrayList<StreamDialogEntry> entries = new ArrayList<>();

if (PlayerHolder.getInstance().isPlayerOpen()) {
if (PlayerHolder.getInstance().isPlayQueueReady()) {
entries.add(StreamDialogEntry.enqueue);

if (PlayerHolder.getInstance().getQueueSize() > 1) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ class FeedFragment : BaseStateFragment<FeedState>() {
if (context == null || context.resources == null || activity == null) return

val entries = ArrayList<StreamDialogEntry>()
if (PlayerHolder.getInstance().isPlayerOpen) {
if (PlayerHolder.getInstance().isPlayQueueReady) {
entries.add(StreamDialogEntry.enqueue)

if (PlayerHolder.getInstance().queueSize > 1) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ private void showStreamDialog(final StreamStatisticsEntry item) {

final ArrayList<StreamDialogEntry> entries = new ArrayList<>();

if (PlayerHolder.getInstance().isPlayerOpen()) {
if (PlayerHolder.getInstance().isPlayQueueReady()) {
entries.add(StreamDialogEntry.enqueue);

if (PlayerHolder.getInstance().getQueueSize() > 1) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -753,7 +753,7 @@ protected void showStreamItemDialog(final PlaylistStreamEntry item) {

final ArrayList<StreamDialogEntry> entries = new ArrayList<>();

if (PlayerHolder.getInstance().isPlayerOpen()) {
if (PlayerHolder.getInstance().isPlayQueueReady()) {
entries.add(StreamDialogEntry.enqueue);

if (PlayerHolder.getInstance().getQueueSize() > 1) {
Expand Down
4 changes: 3 additions & 1 deletion app/src/main/java/org/schabi/newpipe/player/Player.java
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,8 @@ public final class Player implements
// Playback
//////////////////////////////////////////////////////////////////////////*/

private PlayQueue playQueue;
// play queue might be null e.g. while player is starting
@Nullable private PlayQueue playQueue;
private PlayQueueAdapter playQueueAdapter;
private StreamSegmentAdapter segmentAdapter;

Expand Down Expand Up @@ -4202,6 +4203,7 @@ public boolean popupPlayerSelected() {
}


@Nullable
public PlayQueue getPlayQueue() {
return playQueue;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ public static synchronized PlayerHolder getInstance() {
private static final boolean DEBUG = MainActivity.DEBUG;
private static final String TAG = PlayerHolder.class.getSimpleName();

private PlayerServiceExtendedEventListener listener;
@Nullable private PlayerServiceExtendedEventListener listener;

private final PlayerServiceConnection serviceConnection = new PlayerServiceConnection();
private boolean bound;
private MainPlayer playerService;
private Player player;
@Nullable private MainPlayer playerService;
@Nullable private Player player;

/**
* Returns the current {@link MainPlayer.PlayerType} of the {@link MainPlayer} service,
Expand All @@ -70,12 +70,25 @@ public boolean isPlayerOpen() {
return player != null;
}

/**
* Use this method to only allow the user to manipulate the play queue (e.g. by enqueueing via
* the stream long press menu) when there actually is a play queue to manipulate.
* @return true only if the player is open and its play queue is ready (i.e. it is not null)
*/
public boolean isPlayQueueReady() {
return player != null && player.getPlayQueue() != null;
}

public boolean isBound() {
return bound;
}

public int getQueueSize() {
return isPlayerOpen() ? player.getPlayQueue().size() : 0;
if (player == null || player.getPlayQueue() == null) {
// player play queue might be null e.g. while player is starting
return 0;
}
return player.getPlayQueue().size();
}

public void setListener(@Nullable final PlayerServiceExtendedEventListener newListener) {
Expand Down