From f7ff5db4b522d5a74f5fde6c54441cffe85c50ca Mon Sep 17 00:00:00 2001 From: TobiGr Date: Sat, 20 Dec 2025 18:06:19 +0100 Subject: [PATCH] [PlayQueue] Fix incorrect UI states of PlayQueue items onNext() is called after onSubscribe() when creating a PlayQueueAdapter. For that reason the last broadcasted event is applied to the UI state although it is already reflected in the PlayQueue that was used to initialize the adapter. This is the intended behavior of the previously used event broadcaster of the type BehaviorSubject<>. The broadcaster's type was changed to PublishSubject<> which does not emit the last event after onSubscribe(). Ref: https://github.com/TeamNewPipe/NewPipe/issues/9669 --- .../java/org/schabi/newpipe/player/playqueue/PlayQueue.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java b/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java index 97196805d..2a1b9d281 100644 --- a/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java +++ b/app/src/main/java/org/schabi/newpipe/player/playqueue/PlayQueue.java @@ -23,7 +23,7 @@ import java.util.concurrent.atomic.AtomicInteger; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.core.BackpressureStrategy; import io.reactivex.rxjava3.core.Flowable; -import io.reactivex.rxjava3.subjects.BehaviorSubject; +import io.reactivex.rxjava3.subjects.PublishSubject; /** * PlayQueue is responsible for keeping track of a list of streams and the index of @@ -46,7 +46,7 @@ public abstract class PlayQueue implements Serializable { private List backup; private List streams; - private transient BehaviorSubject eventBroadcast; + private transient PublishSubject eventBroadcast; private transient Flowable broadcastReceiver; private transient boolean disposed = false; @@ -71,7 +71,7 @@ public abstract class PlayQueue implements Serializable { *

*/ public void init() { - eventBroadcast = BehaviorSubject.create(); + eventBroadcast = PublishSubject.create(); broadcastReceiver = eventBroadcast.toFlowable(BackpressureStrategy.BUFFER) .observeOn(AndroidSchedulers.mainThread())