From 4ec1c0e09c21260d366d29c5b048dc17910edf65 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Sun, 2 Jun 2024 14:31:14 +0100 Subject: [PATCH] Fade graph no longer lagging --- app/trackmanager.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/app/trackmanager.py b/app/trackmanager.py index f7f1ed3..5370e83 100644 --- a/app/trackmanager.py +++ b/app/trackmanager.py @@ -289,11 +289,19 @@ class _Music: self._adjust_by_ms(ms) - def play(self, path: str, position: Optional[float]) -> None: + def play( + self, + path: str, + start_time: dt.datetime, + position: Optional[float] = None, + ) -> None: """ Start playing the track at path. Log and return if path not found. + + start_time ensures our version and our caller's version of + the start time is the same """ log.info(f"Music[{self.name}].play({path=}, {position=}") @@ -310,7 +318,7 @@ class _Music: if position: self.player.set_position(position) - self.start_dt = dt.datetime.now() + self.start_dt = start_time # For as-yet unknown reasons. sometimes the volume gets # reset to zero within 200mS or so of starting play. This @@ -457,10 +465,11 @@ class _TrackManager: def play(self, position: Optional[float] = None) -> None: """Play track""" - self.player.play(self.path, position) - now = dt.datetime.now() self.start_time = now + + self.player.play(self.path, start_time=now, position=position) + self.end_time = self.start_time + dt.timedelta(milliseconds=self.duration) # Calculate time fade_graph should start updating