Add isPreparingNextPlayer flag

This commit is contained in:
Florian Renaud 2022-11-04 18:29:01 +01:00
parent b87b2cbb63
commit a3cd861e15

View File

@ -65,6 +65,7 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
private var currentMediaPlayer: MediaPlayer? = null private var currentMediaPlayer: MediaPlayer? = null
private var nextMediaPlayer: MediaPlayer? = null private var nextMediaPlayer: MediaPlayer? = null
private var isPreparingNextPlayer: Boolean = false
private var currentVoiceBroadcastEvent: VoiceBroadcastEvent? = null private var currentVoiceBroadcastEvent: VoiceBroadcastEvent? = null
@ -156,12 +157,12 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
private fun onPlaylistUpdated() { private fun onPlaylistUpdated() {
when (playingState) { when (playingState) {
State.PLAYING -> { State.PLAYING -> {
if (nextMediaPlayer == null) { if (nextMediaPlayer == null && !isPreparingNextPlayer) {
prepareNextMediaPlayer() prepareNextMediaPlayer()
} }
} }
State.PAUSED -> { State.PAUSED -> {
if (nextMediaPlayer == null) { if (nextMediaPlayer == null && !isPreparingNextPlayer) {
prepareNextMediaPlayer() prepareNextMediaPlayer()
} }
} }
@ -223,17 +224,14 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
} }
private fun prepareNextMediaPlayer() { private fun prepareNextMediaPlayer() {
nextMediaPlayer = null
val nextItem = playlist.getNextItem() val nextItem = playlist.getNextItem()
if (nextItem != null) { if (nextItem != null) {
isPreparingNextPlayer = true
sessionScope.launch { sessionScope.launch {
prepareMediaPlayer(nextContent) { mp -> prepareMediaPlayer(nextItem.audioEvent.content) { mp ->
if (nextMediaPlayer == null) { nextMediaPlayer = mp
nextMediaPlayer = mp currentMediaPlayer?.setNextMediaPlayer(mp)
currentMediaPlayer?.setNextMediaPlayer(mp) isPreparingNextPlayer = false
} else {
mp.release()
}
} }
} }
} }
@ -274,6 +272,7 @@ class VoiceBroadcastPlayerImpl @Inject constructor(
nextMediaPlayer?.release() nextMediaPlayer?.release()
nextMediaPlayer = null nextMediaPlayer = null
isPreparingNextPlayer = false
} }
private fun onPlayingStateChanged(playingState: State) { private fun onPlayingStateChanged(playingState: State) {