Tighten up player handling (mitigate for issue #11)
This commit is contained in:
parent
6310dfd5c7
commit
987db155a1
30
app/music.py
30
app/music.py
@ -35,6 +35,9 @@ class Music:
|
||||
if not self.playing():
|
||||
return None
|
||||
|
||||
# Only allow one track to fade at a time
|
||||
if self.fading:
|
||||
return
|
||||
self.fading = True
|
||||
|
||||
thread = threading.Thread(target=self._fade)
|
||||
@ -47,6 +50,7 @@ class Music:
|
||||
|
||||
# Take a copy of current player to allow another track to be
|
||||
# started without interfering here
|
||||
|
||||
p = self.player
|
||||
|
||||
DEBUG(f"music._fade(), {self.player=}", True)
|
||||
@ -69,9 +73,7 @@ class Music:
|
||||
p.audio_set_volume(int(self.max_volume * volume_factor))
|
||||
sleep(sleep_time)
|
||||
|
||||
p.stop()
|
||||
DEBUG(f"Releasing play {p=}", True)
|
||||
p.release()
|
||||
self.stop(p)
|
||||
self.fading = False
|
||||
|
||||
def get_playtime(self):
|
||||
@ -138,20 +140,24 @@ class Music:
|
||||
self.max_volume = volume
|
||||
self.player.audio_set_volume(volume)
|
||||
|
||||
def stop(self):
|
||||
def stop(self, player=None):
|
||||
"Immediately stop playing"
|
||||
|
||||
DEBUG("music.stop()", True)
|
||||
DEBUG(f"music.stop(), {player=}", True)
|
||||
|
||||
if not self.player:
|
||||
return None
|
||||
if not player:
|
||||
if not self.player:
|
||||
return
|
||||
player = self.player
|
||||
|
||||
position = self.player.get_position()
|
||||
self.player.stop()
|
||||
p = self.player
|
||||
DEBUG(f"music.stop({player=})")
|
||||
|
||||
position = player.get_position()
|
||||
player.stop()
|
||||
p = player
|
||||
# Ensure we don't reference player after release
|
||||
self.player = None
|
||||
DEBUG(f"Releasing play {p=}", True)
|
||||
player = None
|
||||
DEBUG(f"Releasing player {p=}", True)
|
||||
p.release()
|
||||
|
||||
return position
|
||||
|
||||
Loading…
Reference in New Issue
Block a user