From 947ab42e331af6aaaac74ec78211d2d46855551f Mon Sep 17 00:00:00 2001 From: Niels van Velzen Date: Fri, 27 Feb 2026 21:24:17 +0100 Subject: [PATCH] Refactor PlayerBackendEventListener to abstract class --- playback/core/src/main/kotlin/PlayerState.kt | 2 +- playback/core/src/main/kotlin/backend/BackendService.kt | 2 +- .../src/main/kotlin/backend/PlayerBackendEventListener.kt | 8 ++++---- playback/core/src/main/kotlin/queue/QueueService.kt | 5 +---- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/playback/core/src/main/kotlin/PlayerState.kt b/playback/core/src/main/kotlin/PlayerState.kt index f23d637d1..bd35346de 100644 --- a/playback/core/src/main/kotlin/PlayerState.kt +++ b/playback/core/src/main/kotlin/PlayerState.kt @@ -84,7 +84,7 @@ class MutablePlayerState( get() = backendService.backend?.getPositionInfo() ?: PositionInfo.EMPTY init { - backendService.addListener(object : PlayerBackendEventListener { + backendService.addListener(object : PlayerBackendEventListener() { override fun onPlayStateChange(state: PlayState) { _playState.value = state } diff --git a/playback/core/src/main/kotlin/backend/BackendService.kt b/playback/core/src/main/kotlin/backend/BackendService.kt index 95a2714ad..84e84ba12 100644 --- a/playback/core/src/main/kotlin/backend/BackendService.kt +++ b/playback/core/src/main/kotlin/backend/BackendService.kt @@ -78,7 +78,7 @@ class BackendService { listeners.remove(listener) } - inner class BackendEventListener : PlayerBackendEventListener { + inner class BackendEventListener : PlayerBackendEventListener() { private fun callListeners( body: PlayerBackendEventListener.() -> T ): List = listeners.map { listener -> listener.body() } diff --git a/playback/core/src/main/kotlin/backend/PlayerBackendEventListener.kt b/playback/core/src/main/kotlin/backend/PlayerBackendEventListener.kt index 72d456e60..ecd871ad4 100644 --- a/playback/core/src/main/kotlin/backend/PlayerBackendEventListener.kt +++ b/playback/core/src/main/kotlin/backend/PlayerBackendEventListener.kt @@ -3,8 +3,8 @@ package org.jellyfin.playback.core.backend import org.jellyfin.playback.core.mediastream.PlayableMediaStream import org.jellyfin.playback.core.model.PlayState -interface PlayerBackendEventListener { - fun onPlayStateChange(state: PlayState) - fun onVideoSizeChange(width: Int, height: Int) - fun onMediaStreamEnd(mediaStream: PlayableMediaStream) +abstract class PlayerBackendEventListener { + open fun onPlayStateChange(state: PlayState) = Unit + open fun onVideoSizeChange(width: Int, height: Int) = Unit + open fun onMediaStreamEnd(mediaStream: PlayableMediaStream) = Unit } diff --git a/playback/core/src/main/kotlin/queue/QueueService.kt b/playback/core/src/main/kotlin/queue/QueueService.kt index 762c4249f..be48f3021 100644 --- a/playback/core/src/main/kotlin/queue/QueueService.kt +++ b/playback/core/src/main/kotlin/queue/QueueService.kt @@ -9,7 +9,6 @@ import kotlinx.coroutines.launch import org.jellyfin.playback.core.PlaybackManager import org.jellyfin.playback.core.backend.PlayerBackendEventListener import org.jellyfin.playback.core.mediastream.PlayableMediaStream -import org.jellyfin.playback.core.model.PlayState import org.jellyfin.playback.core.model.PlaybackOrder import org.jellyfin.playback.core.model.RepeatMode import org.jellyfin.playback.core.plugin.PlayerService @@ -53,9 +52,7 @@ class QueueService internal constructor() : PlayerService(), Queue { }.launchIn(coroutineScope) // Automatically advance when current stream ends - manager.backendService.addListener(object : PlayerBackendEventListener { - override fun onPlayStateChange(state: PlayState) = Unit - override fun onVideoSizeChange(width: Int, height: Int) = Unit + manager.backendService.addListener(object : PlayerBackendEventListener() { override fun onMediaStreamEnd(mediaStream: PlayableMediaStream) { coroutineScope.launch { val nextEntry = next(usePlaybackOrder = true, useRepeatMode = true)