Skip to content

Commit 1e724eb

Browse files
authored
Merge pull request #9706 from Jared234/9131_bug_background_player
Fixed a bug that caused the background player to stop working
2 parents b9228df + 5b3f8a3 commit 1e724eb

4 files changed

Lines changed: 20 additions & 18 deletions

File tree

app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -865,7 +865,8 @@ private void runWorker(final boolean forceLoad, final boolean addToBackStack) {
865865
if (playQueue == null) {
866866
playQueue = new SinglePlayQueue(result);
867867
}
868-
if (stack.isEmpty() || !stack.peek().getPlayQueue().equals(playQueue)) {
868+
if (stack.isEmpty() || !stack.peek().getPlayQueue()
869+
.equalStreams(playQueue)) {
869870
stack.push(new StackItem(serviceId, url, title, playQueue));
870871
}
871872
}
@@ -1779,7 +1780,7 @@ public void onQueueUpdate(final PlayQueue queue) {
17791780
// deleted/added items inside Channel/Playlist queue and makes possible to have
17801781
// a history of played items
17811782
@Nullable final StackItem stackPeek = stack.peek();
1782-
if (stackPeek != null && !stackPeek.getPlayQueue().equals(queue)) {
1783+
if (stackPeek != null && !stackPeek.getPlayQueue().equalStreams(queue)) {
17831784
@Nullable final PlayQueueItem playQueueItem = queue.getItem();
17841785
if (playQueueItem != null) {
17851786
stack.push(new StackItem(playQueueItem.getServiceId(), playQueueItem.getUrl(),
@@ -1845,7 +1846,7 @@ public void onMetadataUpdate(final StreamInfo info, final PlayQueue queue) {
18451846
// They are not equal when user watches something in popup while browsing in fragment and
18461847
// then changes screen orientation. In that case the fragment will set itself as
18471848
// a service listener and will receive initial call to onMetadataUpdate()
1848-
if (!queue.equals(playQueue)) {
1849+
if (!queue.equalStreams(playQueue)) {
18491850
return;
18501851
}
18511852

@@ -2102,7 +2103,7 @@ private StackItem findQueueInStack(final PlayQueue queue) {
21022103
final Iterator<StackItem> iterator = stack.descendingIterator();
21032104
while (iterator.hasNext()) {
21042105
final StackItem next = iterator.next();
2105-
if (next.getPlayQueue().equals(queue)) {
2106+
if (next.getPlayQueue().equalStreams(queue)) {
21062107
item = next;
21072108
break;
21082109
}
@@ -2117,7 +2118,7 @@ private void replaceQueueIfUserConfirms(final Runnable onAllow) {
21172118
if (isClearingQueueConfirmationRequired(activity)
21182119
&& playerIsNotStopped()
21192120
&& activeQueue != null
2120-
&& !activeQueue.equals(playQueue)) {
2121+
&& !activeQueue.equalStreams(playQueue)) {
21212122
showClearingQueueConfirmation(onAllow);
21222123
} else {
21232124
onAllow.run();

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ public void handleIntent(@NonNull final Intent intent) {
348348
final boolean playbackSkipSilence = getPrefs().getBoolean(getContext().getString(
349349
R.string.playback_skip_silence_key), getPlaybackSkipSilence());
350350

351-
final boolean samePlayQueue = playQueue != null && playQueue.equals(newQueue);
351+
final boolean samePlayQueue = playQueue != null && playQueue.equalStreamsAndIndex(newQueue);
352352
final int repeatMode = intent.getIntExtra(REPEAT_MODE, getRepeatMode());
353353
final boolean playWhenReady = intent.getBooleanExtra(PLAY_WHEN_READY, true);
354354
final boolean isMuted = intent.getBooleanExtra(IS_MUTED, isMuted());

app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -518,12 +518,10 @@ public synchronized boolean previous() {
518518
* This method also gives a chance to track history of items in a queue in
519519
* VideoDetailFragment without duplicating items from two identical queues
520520
*/
521-
@Override
522-
public boolean equals(@Nullable final Object obj) {
523-
if (!(obj instanceof PlayQueue)) {
521+
public boolean equalStreams(@Nullable final PlayQueue other) {
522+
if (other == null) {
524523
return false;
525524
}
526-
final PlayQueue other = (PlayQueue) obj;
527525
if (size() != other.size()) {
528526
return false;
529527
}
@@ -539,9 +537,11 @@ public boolean equals(@Nullable final Object obj) {
539537
return true;
540538
}
541539

542-
@Override
543-
public int hashCode() {
544-
return streams.hashCode();
540+
public boolean equalStreamsAndIndex(@Nullable final PlayQueue other) {
541+
if (equalStreams(other)) {
542+
return other.getIndex() == getIndex();
543+
}
544+
return false;
545545
}
546546

547547
public boolean isDisposed() {

app/src/test/java/org/schabi/newpipe/player/playqueue/PlayQueueTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
import static org.junit.Assert.assertEquals;
1515
import static org.junit.Assert.assertFalse;
16-
import static org.junit.Assert.assertNotEquals;
1716
import static org.junit.Assert.assertNull;
1817
import static org.junit.Assert.assertSame;
1918
import static org.junit.Assert.assertTrue;
@@ -169,15 +168,17 @@ public void sameStreams() {
169168
final List<PlayQueueItem> streams = Collections.nCopies(5, item1);
170169
final PlayQueue queue1 = makePlayQueue(0, streams);
171170
final PlayQueue queue2 = makePlayQueue(0, streams);
172-
assertEquals(queue1, queue2);
171+
assertTrue(queue1.equalStreams(queue2));
172+
assertTrue(queue1.equalStreamsAndIndex(queue2));
173173
}
174174

175175
@Test
176176
public void sameStreamsDifferentIndex() {
177177
final List<PlayQueueItem> streams = Collections.nCopies(5, item1);
178178
final PlayQueue queue1 = makePlayQueue(1, streams);
179179
final PlayQueue queue2 = makePlayQueue(4, streams);
180-
assertEquals(queue1, queue2);
180+
assertTrue(queue1.equalStreams(queue2));
181+
assertFalse(queue1.equalStreamsAndIndex(queue2));
181182
}
182183

183184
@Test
@@ -186,7 +187,7 @@ public void sameSizeDifferentItems() {
186187
final List<PlayQueueItem> streams2 = Collections.nCopies(5, item2);
187188
final PlayQueue queue1 = makePlayQueue(0, streams1);
188189
final PlayQueue queue2 = makePlayQueue(0, streams2);
189-
assertNotEquals(queue1, queue2);
190+
assertFalse(queue1.equalStreams(queue2));
190191
}
191192

192193
@Test
@@ -195,7 +196,7 @@ public void differentSizeStreams() {
195196
final List<PlayQueueItem> streams2 = Collections.nCopies(6, item2);
196197
final PlayQueue queue1 = makePlayQueue(0, streams1);
197198
final PlayQueue queue2 = makePlayQueue(0, streams2);
198-
assertNotEquals(queue1, queue2);
199+
assertFalse(queue1.equalStreams(queue2));
199200
}
200201
}
201202
}

0 commit comments

Comments
 (0)