playback: fix parent restore
A single missed savedState access blew up parent restore silently, and in some other cases with non-destructive queue restores would also not restore the parent.
This commit is contained in:
parent
ba0d2cd879
commit
96d4a84f52
2 changed files with 23 additions and 19 deletions
|
@ -367,17 +367,28 @@ class ExoPlaybackStateHolder(
|
|||
rawQueue: RawQueue,
|
||||
ack: StateAck.NewPlayback?
|
||||
) {
|
||||
this.parent = parent
|
||||
player.setMediaItems(rawQueue.heap.map { it.toMediaItem(context, null) })
|
||||
if (rawQueue.isShuffled) {
|
||||
player.shuffleModeEnabled = true
|
||||
player.setShuffleOrder(BetterShuffleOrder(rawQueue.shuffledMapping.toIntArray()))
|
||||
} else {
|
||||
player.shuffleModeEnabled = false
|
||||
logD("Applying saved state")
|
||||
var sendEvent = false
|
||||
if (this.parent != parent) {
|
||||
this.parent = parent
|
||||
sendEvent = true
|
||||
}
|
||||
if (rawQueue != resolveQueue()) {
|
||||
player.setMediaItems(rawQueue.heap.map { it.toMediaItem(context, null) })
|
||||
if (rawQueue.isShuffled) {
|
||||
player.shuffleModeEnabled = true
|
||||
player.setShuffleOrder(BetterShuffleOrder(rawQueue.shuffledMapping.toIntArray()))
|
||||
} else {
|
||||
player.shuffleModeEnabled = false
|
||||
}
|
||||
player.seekTo(rawQueue.heapIndex, C.TIME_UNSET)
|
||||
player.prepare()
|
||||
player.pause()
|
||||
sendEvent = true
|
||||
}
|
||||
if (sendEvent) {
|
||||
ack?.let { playbackManager.ack(this, it) }
|
||||
}
|
||||
player.seekTo(rawQueue.heapIndex, C.TIME_UNSET)
|
||||
player.prepare()
|
||||
ack?.let { playbackManager.ack(this, it) }
|
||||
}
|
||||
|
||||
override fun endSession() {
|
||||
|
|
|
@ -795,15 +795,8 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
|
|||
index
|
||||
})
|
||||
|
||||
// Valid state where something needs to be played, direct the stateholder to apply
|
||||
// this new state.
|
||||
val oldStateMirror = stateMirror
|
||||
if (oldStateMirror.rawQueue != rawQueue) {
|
||||
logD("Queue changed, must reload player")
|
||||
stateHolder.playing(false)
|
||||
stateHolder.applySavedState(parent, rawQueue, StateAck.NewPlayback)
|
||||
stateHolder.seekTo(savedState.positionMs)
|
||||
}
|
||||
stateHolder.applySavedState(savedState.parent, rawQueue, StateAck.NewPlayback)
|
||||
stateHolder.seekTo(savedState.positionMs)
|
||||
stateHolder.repeatMode(savedState.repeatMode)
|
||||
|
||||
isInitialized = true
|
||||
|
|
Loading…
Reference in a new issue