diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/LocalMediaPlayer.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/LocalMediaPlayer.kt index a5c236aa..61fcf574 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/LocalMediaPlayer.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/LocalMediaPlayer.kt @@ -240,17 +240,15 @@ class LocalMediaPlayer(private val audioFocusHandler: AudioFocusHandler, private // FIXME: Why is currentPlaying passed here and not nextPlaying?! attachHandlersToPlayer(mediaPlayer, currentPlaying!!, false) - if (onNextSongRequested != null) { - val mainHandler = Handler(context.mainLooper) - val myRunnable = Runnable { onNextSongRequested!!.run() } - mainHandler.post(myRunnable) - } + postRunnable(onNextSongRequested) // Proxy should not be being used here since the next player was already setup to play proxy?.stop() proxy = null } + + @Synchronized fun pause() { try { @@ -479,11 +477,9 @@ class LocalMediaPlayer(private val audioFocusHandler: AudioFocusHandler, private setPlayerState(PlayerState.PAUSED) } } - if (onPrepared != null) { - val mainHandler = Handler(context.mainLooper) - val myRunnable = Runnable { onPrepared!!.run() } - mainHandler.post(myRunnable) - } + + postRunnable(onPrepared) + } attachHandlersToPlayer(mediaPlayer, downloadFile, partial) mediaPlayer.prepareAsync() @@ -724,4 +720,12 @@ class LocalMediaPlayer(private val audioFocusHandler: AudioFocusHandler, private Timber.w(x, "Next Media player error") nextMediaPlayer!!.reset() } + + private fun postRunnable(runnable: Runnable?) { + if (runnable != null) { + val mainHandler = Handler(context.mainLooper) + val myRunnable = Runnable { runnable.run() } + mainHandler.post(myRunnable) + } + } } \ No newline at end of file