mpv: Hopefully fix reset on regular file change bug
This commit is contained in:
parent
b9f20dfb07
commit
634124b4e5
@ -49,7 +49,7 @@ class BasePlayer(object):
|
||||
'''
|
||||
@type filePath: string
|
||||
'''
|
||||
def openFile(self, filePath):
|
||||
def openFile(self, filePath, resetPosition=False):
|
||||
raise NotImplementedError()
|
||||
|
||||
|
||||
|
||||
@ -385,7 +385,7 @@ class MPCHCAPIPlayer(BasePlayer):
|
||||
if filePath:
|
||||
self.openFile(filePath)
|
||||
|
||||
def openFile(self, filePath):
|
||||
def openFile(self, filePath, resetPosition=False):
|
||||
self._mpcApi.openFile(filePath)
|
||||
|
||||
def displayMessage(self, message, duration = (constants.OSD_DURATION*1000)):
|
||||
|
||||
@ -25,7 +25,7 @@ class MplayerPlayer(BasePlayer):
|
||||
self.quitReason = None
|
||||
self.lastLoadedTime = None
|
||||
self.fileLoaded = False
|
||||
self._resetPosition = False
|
||||
self.lastResetTime = None
|
||||
try:
|
||||
self._listener = self.__Listener(self, playerPath, filePath, args)
|
||||
except ValueError:
|
||||
@ -92,7 +92,9 @@ class MplayerPlayer(BasePlayer):
|
||||
def _loadFile(self, filePath):
|
||||
self._listener.sendLine(u'loadfile {}'.format(self._quoteArg(filePath)))
|
||||
|
||||
def openFile(self, filePath):
|
||||
def openFile(self, filePath, resetPosition=False):
|
||||
if resetPosition:
|
||||
self.lastResetTime = time.time()
|
||||
self._loadFile(filePath)
|
||||
self._onFileUpdate()
|
||||
if self._paused != self._client.getGlobalPaused():
|
||||
|
||||
@ -19,7 +19,7 @@ class MpvPlayer(MplayerPlayer):
|
||||
self._listener.sendLine('cycle pause')
|
||||
|
||||
def _storePosition(self, value):
|
||||
if self._resetPosition:
|
||||
if self._recentlyReset():
|
||||
self._position = 0
|
||||
elif self._fileIsLoaded():
|
||||
self._position = value
|
||||
@ -65,17 +65,22 @@ class MpvPlayer(MplayerPlayer):
|
||||
self._positionAsk.set()
|
||||
|
||||
elif "Playing:" in line:
|
||||
if self._position < 1:
|
||||
self._resetPosition = True
|
||||
self._clearFileLoaded()
|
||||
|
||||
def _recentlyReset(self):
|
||||
if not self.lastResetTime:
|
||||
return False
|
||||
elif time.time() < self.lastResetTime + constants.MPV_NEWFILE_IGNORE_TIME:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
def _onMPVFileUpdate(self):
|
||||
self.fileLoaded = True
|
||||
self.lastLoadedTime = time.time()
|
||||
self.reactor.callFromThread(self._client.updateFile, self._filename, self._duration, self._filepath)
|
||||
if not self._resetPosition:
|
||||
if not (self._recentlyReset()):
|
||||
self.reactor.callFromThread(self.setPosition, self._client.getGlobalPosition())
|
||||
self._resetPosition = False
|
||||
if self._paused != self._client.getGlobalPaused():
|
||||
self.reactor.callFromThread(self._client.getGlobalPaused)
|
||||
|
||||
|
||||
@ -117,7 +117,7 @@ class VlcPlayer(BasePlayer):
|
||||
def _isASCII (self, s):
|
||||
return all(ord(c) < 128 for c in s)
|
||||
|
||||
def openFile(self, filePath):
|
||||
def openFile(self, filePath, resetPosition=False):
|
||||
if self._isASCII(filePath):
|
||||
self._listener.sendLine('load-file: {}'.format(filePath.encode('ascii', 'ignore')))
|
||||
else:
|
||||
|
||||
@ -443,7 +443,7 @@ class MainWindow(QtGui.QMainWindow):
|
||||
self._syncplayClient._player.openFile(dropfilepath)
|
||||
else:
|
||||
self._syncplayClient.setPosition(0)
|
||||
self._syncplayClient._player.openFile(dropfilepath)
|
||||
self._syncplayClient._player.openFile(dropfilepath, resetPosition=True)
|
||||
self._syncplayClient.setPosition(0)
|
||||
|
||||
def saveSettings(self):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user