diff --git a/anki/sound.py b/anki/sound.py index d813a7e02..72760b485 100644 --- a/anki/sound.py +++ b/anki/sound.py @@ -186,6 +186,9 @@ mplayerClear = False class MplayerMonitor(threading.Thread): + mplayer = None + deadPlayers: List[subprocess.Popen] = [] + def run(self): global mplayerClear self.mplayer = None @@ -206,7 +209,7 @@ class MplayerMonitor(threading.Thread): while mplayerQueue: # ensure started if not self.mplayer: - self.startProcess() + self.mplayer = self.startProcess() # pop a file try: item = mplayerQueue.pop(0) @@ -226,7 +229,7 @@ class MplayerMonitor(threading.Thread): # mplayer has quit and needs restarting self.deadPlayers.append(self.mplayer) self.mplayer = None - self.startProcess() + self.mplayer = self.startProcess() self.mplayer.stdin.write(cmd) self.mplayer.stdin.flush() # if we feed mplayer too fast it loses files @@ -256,7 +259,7 @@ class MplayerMonitor(threading.Thread): try: cmd = mplayerCmd + ["-slave", "-idle"] cmd, env = _packagedCmd(cmd) - self.mplayer = subprocess.Popen( + return subprocess.Popen( cmd, startupinfo=si, stdin=subprocess.PIPE, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, env=env)