mpv: Hopefully fix reset on regular file change bug

This commit is contained in:
Et0h 2014-09-26 13:40:20 +01:00
parent b9f20dfb07
commit 634124b4e5
6 changed files with 18 additions and 11 deletions

View File

@ -49,7 +49,7 @@ class BasePlayer(object):
'''
@type filePath: string
'''
def openFile(self, filePath):
def openFile(self, filePath, resetPosition=False):
raise NotImplementedError()

View File

@ -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)):

View File

@ -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():

View File

@ -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)

View File

@ -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:

View File

@ -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):