playback: readd service reinit
Make sure the service is properly re-initialized when it dies and is then restarted.
This commit is contained in:
parent
b2d71f8903
commit
3267ae98be
3 changed files with 20 additions and 6 deletions
|
@ -62,7 +62,7 @@ interface PlaybackStateHolder {
|
|||
|
||||
fun handleDeferred(action: DeferredPlayback): Boolean
|
||||
|
||||
fun applySavedState(parent: MusicParent?, rawQueue: RawQueue)
|
||||
fun applySavedState(parent: MusicParent?, rawQueue: RawQueue, ack: StateAck.NewPlayback?)
|
||||
}
|
||||
|
||||
sealed interface StateAck {
|
||||
|
|
|
@ -217,6 +217,11 @@ interface PlaybackStateManager {
|
|||
*/
|
||||
fun playing(isPlaying: Boolean)
|
||||
|
||||
/**
|
||||
* Update the current [RepeatMode].
|
||||
*
|
||||
* @param repeatMode The new [RepeatMode].
|
||||
*/
|
||||
fun repeatMode(repeatMode: RepeatMode)
|
||||
|
||||
/**
|
||||
|
@ -407,8 +412,11 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
|
|||
}
|
||||
|
||||
this.stateHolder = stateHolder
|
||||
|
||||
// TODO: Re-init player
|
||||
if (isInitialized) {
|
||||
stateHolder.applySavedState(stateMirror.parent, stateMirror.rawQueue, null)
|
||||
stateHolder.seekTo(stateMirror.progression.calculateElapsedPositionMs())
|
||||
stateHolder.playing(false)
|
||||
}
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
|
@ -770,12 +778,14 @@ class PlaybackStateManagerImpl @Inject constructor() : PlaybackStateManager {
|
|||
|
||||
if (oldStateMirror.rawQueue != rawQueue) {
|
||||
logD("Queue changed, must reload player")
|
||||
stateHolder?.applySavedState(parent, rawQueue)
|
||||
stateHolder?.applySavedState(parent, rawQueue, StateAck.NewPlayback)
|
||||
stateHolder?.playing(false)
|
||||
}
|
||||
|
||||
if (oldStateMirror.progression.calculateElapsedPositionMs() != savedState.positionMs) {
|
||||
logD("Seeking to saved position ${savedState.positionMs}ms")
|
||||
stateHolder?.seekTo(savedState.positionMs)
|
||||
stateHolder?.playing(false)
|
||||
}
|
||||
|
||||
isInitialized = true
|
||||
|
|
|
@ -369,11 +369,15 @@ class PlaybackService :
|
|||
return true
|
||||
}
|
||||
|
||||
override fun applySavedState(parent: MusicParent?, rawQueue: RawQueue) {
|
||||
override fun applySavedState(
|
||||
parent: MusicParent?,
|
||||
rawQueue: RawQueue,
|
||||
ack: StateAck.NewPlayback?
|
||||
) {
|
||||
this.parent = parent
|
||||
player.applyQueue(rawQueue)
|
||||
player.prepare()
|
||||
playbackManager.ack(this, StateAck.NewPlayback)
|
||||
ack?.let { playbackManager.ack(this, it) }
|
||||
}
|
||||
|
||||
// --- PLAYER OVERRIDES ---
|
||||
|
|
Loading…
Reference in a new issue