diff --git a/syncplay/constants.py b/syncplay/constants.py index dfe81ff..b9a982e 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -116,6 +116,7 @@ MPC_RETRY_WAIT_TIME = 0.01 MPC_MAX_RETRIES = 30 MPC_PAUSE_TOGGLE_DELAY = 0.05 MPV_NEWFILE_IGNORE_TIME = 1 +STREAM_ADDITIONAL_IGNORE_TIME = 10 MPV_LOCK_WAIT_TIME = 0.2 VLC_OPEN_MAX_WAIT_TIME = 15 VLC_MIN_PORT = 10000 diff --git a/syncplay/players/mpv.py b/syncplay/players/mpv.py index ff52af2..de3f9c8 100644 --- a/syncplay/players/mpv.py +++ b/syncplay/players/mpv.py @@ -3,6 +3,7 @@ import subprocess from syncplay.players.mplayer import MplayerPlayer from syncplay.messages import getMessage from syncplay import constants +from syncplay.utils import isURL import os, sys, time class MpvPlayer(MplayerPlayer): @@ -129,7 +130,12 @@ class NewMpvPlayer(OldMpvPlayer): if self.lastMPVPositionUpdate is None: return self._client.getGlobalPosition() + + if self._recentlyReset: + return self._position + diff = time.time() - self.lastMPVPositionUpdate + if diff > constants.MPV_UNRESPONSIVE_THRESHOLD: self.reactor.callFromThread(self._client.ui.showErrorMessage, getMessage("mpv-unresponsive-error").format(int(diff)), True) self.drop() @@ -184,10 +190,15 @@ class NewMpvPlayer(OldMpvPlayer): def openFile(self, filePath, resetPosition=False): if resetPosition: self.lastResetTime = time.time() + if isURL(filePath): + self.lastResetTime += constants.STREAM_ADDITIONAL_IGNORE_TIME self._loadFile(filePath) if self._paused != self._client.getGlobalPaused(): self.setPaused(self._client.getGlobalPaused()) - self.setPosition(self._client.getGlobalPosition()) + if resetPosition == False: + self.setPosition(self._client.getGlobalPosition()) + else: + self._storePosition(0) def _handleUnknownLine(self, line): self.mpvVersionErrorCheck(line)