diff --git a/feeluown/player/mpvplayer.py b/feeluown/player/mpvplayer.py index 4a2e35a852..a787551601 100644 --- a/feeluown/player/mpvplayer.py +++ b/feeluown/player/mpvplayer.py @@ -160,9 +160,7 @@ def set_play_range(self, start=None, end=None): self.seeked.emit(start) _mpv_set_option_string(self._mpv.handle, b'end', bytes(end_str, 'utf-8')) - def fade(self, fade_in: bool, max_volume=None, callback=None): - self.fade_lock.acquire() - + def fade(self, fade_in: bool, callback=None): # k: factor between 0 and 1, to represent tick/fade_time def fade_curve(k: float, fade_in: bool) -> float: if fade_in: @@ -186,35 +184,26 @@ def set_volume(max_volume: int, fade_in: bool): self.volume = new_volume time.sleep(interval) - if max_volume: - volume = max_volume - else: - volume = self.volume - - set_volume(volume, fade_in=fade_in) + with self.fade_lock: + max_volume = self.volume + set_volume(max_volume, fade_in=fade_in) - if callback is not None: - callback() + if callback is not None: + callback() - self.volume = volume - self.fade_lock.release() + self.volume = max_volume def resume(self): - if self.do_fade: - _volume = self.volume - self.volume = 0 - - self._mpv.pause = False - self.state = State.playing - if self.do_fade: fade_thread = Thread( target=self.fade, - kwargs={"fade_in": True, - "max_volume": _volume} + kwargs={"fade_in": True} ) fade_thread.start() + self._mpv.pause = False + self.state = State.playing + def _pause(self): self._mpv.pause = True self.state = State.paused