Fix mpv pause state when loading new media

- added some debug logging
This commit is contained in:
Philipp Grafe committed 2026-02-09 11:41:40 +01:00
1 parent f5b76b8921
commit 3e893ab44b
1 file changed
+27 -3
+27 -3
View File
@@ -1,4 +1,5 @@
# mpv_player.py # mpv_player.py
import logging
from typing import Union, List, Callable, Optional from typing import Union, List, Callable, Optional
from .player.libmpv import LibMpvPlayer from .player.libmpv import LibMpvPlayer
@@ -13,9 +14,12 @@ class MpvMediaPlayer:
""" """
def __init__(self, device: str | None = None) -> None: def __init__(self, device: str | None = None) -> None:
self._log = logging.getLogger(self.__class__.__name__)
self._player = LibMpvPlayer(device=device) self._player = LibMpvPlayer(device=device)
self._done_callback: Optional[Callable[[], None]] = None self._done_callback: Optional[Callable[[], None]] = None
self._log.debug("MpvMediaPlayer initialized (device=%s)", device)
def play( def play(
self, self,
url: Union[str, List[str]], url: Union[str, List[str]],
@@ -28,29 +32,46 @@ class MpvMediaPlayer:
Args: Args:
url: Media URL or list of URLs (LVA currently uses a single URL). url: Media URL or list of URLs (LVA currently uses a single URL).
done_callback: Optional callback invoked when playback finishes. done_callback: Optional callback invoked when playback finishes.
stop_first: Kept for API compatibility; currently unused. stop_first: Kept for API compatibility.
""" """
# LVA currently only uses single URLs # LVA currently only uses single URLs
if isinstance(url, list): if isinstance(url, list):
self._log.debug("Received URL list, using first entry")
url = url[0] url = url[0]
self._log.info("Playing media: %s", url)
self._log.debug(
"play(url=%s, stop_first=%s, done_callback=%s)",
url,
stop_first,
bool(done_callback),
)
self._done_callback = done_callback self._done_callback = done_callback
self._player.play(url, done_callback=done_callback, stop_first=stop_first) self._player.play(url, done_callback=done_callback, stop_first=stop_first)
def pause(self) -> None: def pause(self) -> None:
"""Pause playback.""" """Pause playback."""
self._log.debug("pause() called")
self._player.pause() self._player.pause()
def resume(self) -> None: def resume(self) -> None:
"""Resume playback.""" """Resume playback."""
self._log.debug("resume() called")
self._player.resume() self._player.resume()
def stop(self) -> None: def stop(self) -> None:
"""Stop playback and invoke the done callback if present.""" """Stop playback and invoke the done callback if present."""
self._log.debug("stop() called")
self._player.stop() self._player.stop()
if self._done_callback: if self._done_callback:
self._done_callback() self._log.debug("Invoking done_callback due to stop()")
self._done_callback = None try:
self._done_callback()
finally:
self._done_callback = None
def set_volume(self, volume: float) -> None: def set_volume(self, volume: float) -> None:
""" """
@@ -59,6 +80,7 @@ class MpvMediaPlayer:
Args: Args:
volume: Volume in percent (0.0–100.0). volume: Volume in percent (0.0–100.0).
""" """
self._log.debug("set_volume(volume=%.2f)", volume)
self._player.set_volume(volume) self._player.set_volume(volume)
def duck(self, factor: float = 0.5) -> None: def duck(self, factor: float = 0.5) -> None:
@@ -68,8 +90,10 @@ class MpvMediaPlayer:
Args: Args:
factor: Volume multiplier (0.0–1.0). factor: Volume multiplier (0.0–1.0).
""" """
self._log.debug("duck(factor=%.2f)", factor)
self._player.duck(factor) self._player.duck(factor)
def unduck(self) -> None: def unduck(self) -> None:
"""Restore volume after ducking.""" """Restore volume after ducking."""
self._log.debug("unduck() called")
self._player.unduck() self._player.unduck()