Attempt to fix VLC file chane state issue
This commit is contained in:
parent
42778029c8
commit
d40576d0fe
@ -28,6 +28,7 @@ class VlcPlayer(BasePlayer):
|
|||||||
self._duration = None
|
self._duration = None
|
||||||
self._filename = None
|
self._filename = None
|
||||||
self._filepath = None
|
self._filepath = None
|
||||||
|
self._filechanged = False
|
||||||
|
|
||||||
self._durationAsk = threading.Event()
|
self._durationAsk = threading.Event()
|
||||||
self._filenameAsk = threading.Event()
|
self._filenameAsk = threading.Event()
|
||||||
@ -68,12 +69,16 @@ class VlcPlayer(BasePlayer):
|
|||||||
self.setPosition(self._client.getGlobalPosition())
|
self.setPosition(self._client.getGlobalPosition())
|
||||||
|
|
||||||
def askForStatus(self):
|
def askForStatus(self):
|
||||||
|
self._filechanged = False
|
||||||
self._positionAsk.clear()
|
self._positionAsk.clear()
|
||||||
self._pausedAsk.clear()
|
self._pausedAsk.clear()
|
||||||
self._listener.sendLine(".")
|
self._listener.sendLine(".")
|
||||||
self._positionAsk.wait()
|
if self._filechanged == False:
|
||||||
self._pausedAsk.wait()
|
self._positionAsk.wait()
|
||||||
self._client.updatePlayerStatus(self._paused, self._position)
|
self._pausedAsk.wait()
|
||||||
|
self._client.updatePlayerStatus(self._paused, self._position)
|
||||||
|
else:
|
||||||
|
self._client.updatePlayerStatus(self._client.getGlobalPaused(), self._client.getGlobalPosition())
|
||||||
|
|
||||||
def displayMessage(self, message, duration = constants.OSD_DURATION * 1000):
|
def displayMessage(self, message, duration = constants.OSD_DURATION * 1000):
|
||||||
duration /= 1000
|
duration /= 1000
|
||||||
@ -101,10 +106,12 @@ class VlcPlayer(BasePlayer):
|
|||||||
name, value = match.group('command'), match.group('argument')
|
name, value = match.group('command'), match.group('argument')
|
||||||
|
|
||||||
if(line == "filepath-change-notification"):
|
if(line == "filepath-change-notification"):
|
||||||
|
self._filechanged = True
|
||||||
t = threading.Thread(target=self._onFileUpdate)
|
t = threading.Thread(target=self._onFileUpdate)
|
||||||
t.setDaemon(True)
|
t.setDaemon(True)
|
||||||
t.start()
|
t.start()
|
||||||
elif (name == "filepath" and value != "no-input"):
|
elif (name == "filepath" and value != "no-input"):
|
||||||
|
self._filechanged = True
|
||||||
if("file://" in value):
|
if("file://" in value):
|
||||||
value = value.replace("file://", "")
|
value = value.replace("file://", "")
|
||||||
if(not os.path.isfile(value)):
|
if(not os.path.isfile(value)):
|
||||||
@ -115,12 +122,13 @@ class VlcPlayer(BasePlayer):
|
|||||||
self._duration = float(value.replace(",", "."))
|
self._duration = float(value.replace(",", "."))
|
||||||
self._durationAsk.set()
|
self._durationAsk.set()
|
||||||
elif(name == "playstate"):
|
elif(name == "playstate"):
|
||||||
self._paused = bool(value != 'playing') if(value != "no-input") else self._client.getGlobalPaused()
|
self._paused = bool(value != 'playing') if(value != "no-input" and self._filechanged == False) else self._client.getGlobalPaused()
|
||||||
self._pausedAsk.set()
|
self._pausedAsk.set()
|
||||||
elif(name == "position"):
|
elif(name == "position"):
|
||||||
self._position = float(value.replace(",", ".")) if (value != "no-input") else self._client.getGlobalPosition()
|
self._position = float(value.replace(",", ".")) if (value != "no-input" and self._filechanged == False) else self._client.getGlobalPosition()
|
||||||
self._positionAsk.set()
|
self._positionAsk.set()
|
||||||
elif(name == "filename"):
|
elif(name == "filename"):
|
||||||
|
self._filechanged = True
|
||||||
self._filename = value
|
self._filename = value
|
||||||
self._filenameAsk.set()
|
self._filenameAsk.set()
|
||||||
elif (line[:16] == "VLC media player"):
|
elif (line[:16] == "VLC media player"):
|
||||||
@ -217,4 +225,4 @@ class VlcPlayer(BasePlayer):
|
|||||||
def sendLine(self, line):
|
def sendLine(self, line):
|
||||||
if(self.connected):
|
if(self.connected):
|
||||||
# print "send: {}".format(line)
|
# print "send: {}".format(line)
|
||||||
self.push(line + "\n")
|
self.push(line + "\n")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user