1
0
mirror of https://github.com/spl0k/supysonic.git synced 2024-12-23 01:16:18 +00:00

Fixed jukebox endpoint response not being in sync when skipping

This commit is contained in:
Alban Féron 2019-09-01 17:23:50 +02:00
parent 0d40ede256
commit 4e69cd0551
No known key found for this signature in database
GPG Key ID: 8CE0313646D16165

View File

@ -25,7 +25,7 @@ class Jukebox(object):
def __init__(self, cmd): def __init__(self, cmd):
self.__cmd = shlex.split(cmd) self.__cmd = shlex.split(cmd)
self.__playlist = [] self.__playlist = []
self.__index = -1 self.__index = 0
self.__thread = None self.__thread = None
self.__lock = RLock() self.__lock = RLock()
@ -63,7 +63,7 @@ class Jukebox(object):
raise IndexError() raise IndexError()
with self.__lock: with self.__lock:
self.__index = index - 1 self.__index = index
self.__skip.set() self.__skip.set()
self.start() self.start()
@ -79,7 +79,7 @@ class Jukebox(object):
def clear(self): def clear(self):
with self.__lock: with self.__lock:
self.__playlist.clear() self.__playlist.clear()
self.__index = -1 self.__index = 0
def remove(self, index): def remove(self, index):
try: try:
@ -108,9 +108,13 @@ class Jukebox(object):
if self.__skip.is_set(): if self.__skip.is_set():
proc.terminate() proc.terminate()
proc.wait() proc.wait()
proc = None
self.__skip.clear() self.__skip.clear()
if proc is None or proc.poll() is not None: if proc is None:
with self.__lock:
proc = self.__play_file()
elif proc.poll() is not None:
with self.__lock: with self.__lock:
self.__index += 1 self.__index += 1
if self.__index >= len(self.__playlist): if self.__index >= len(self.__playlist):