mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 06:22:22 -04:00
Fix no sound after mpv restart
This commit is contained in:
parent
422e313c16
commit
d1b74dfcb6
1 changed files with 17 additions and 16 deletions
|
@ -245,10 +245,13 @@ class MPVBase:
|
|||
else:
|
||||
r, w, e = select.select([self._sock], [], [], 1)
|
||||
if r:
|
||||
b = self._sock.recv(1024)
|
||||
if not b:
|
||||
break
|
||||
buf += b
|
||||
try:
|
||||
b = self._sock.recv(1024)
|
||||
if not b:
|
||||
break
|
||||
buf += b
|
||||
except ConnectionResetError:
|
||||
return
|
||||
|
||||
newline = buf.find(b"\n")
|
||||
while newline >= 0:
|
||||
|
@ -373,7 +376,7 @@ class MPVBase:
|
|||
return self._get_response(timeout)
|
||||
except MPVCommandError as e:
|
||||
raise MPVCommandError("%r: %s" % (message["command"], e))
|
||||
except MPVTimeoutError as e:
|
||||
except Exception as e:
|
||||
if _retry:
|
||||
print("mpv timed out, restarting")
|
||||
self._stop_process()
|
||||
|
@ -400,6 +403,7 @@ class MPVBase:
|
|||
self._start_socket()
|
||||
self._prepare_thread()
|
||||
self._start_thread()
|
||||
self._register_callbacks()
|
||||
|
||||
def close(self):
|
||||
"""Shutdown the mpv process and our communication setup.
|
||||
|
@ -438,6 +442,9 @@ class MPV(MPVBase):
|
|||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
self._register_callbacks()
|
||||
|
||||
def _register_callbacks(self):
|
||||
self._callbacks = {}
|
||||
self._property_serials = {}
|
||||
self._new_serial = iter(range(sys.maxsize))
|
||||
|
@ -483,16 +490,10 @@ class MPV(MPVBase):
|
|||
"""Start up the communication threads.
|
||||
"""
|
||||
super()._start_thread()
|
||||
self._event_thread = threading.Thread(target=self._event_reader)
|
||||
self._event_thread.daemon = True
|
||||
self._event_thread.start()
|
||||
|
||||
def _stop_thread(self):
|
||||
"""Stop the communication threads.
|
||||
"""
|
||||
super()._stop_thread()
|
||||
if hasattr(self, "_event_thread"):
|
||||
self._event_thread.join()
|
||||
if not hasattr(self, "_event_thread"):
|
||||
self._event_thread = threading.Thread(target=self._event_reader)
|
||||
self._event_thread.daemon = True
|
||||
self._event_thread.start()
|
||||
|
||||
#
|
||||
# Event/callback API
|
||||
|
@ -500,7 +501,7 @@ class MPV(MPVBase):
|
|||
def _event_reader(self):
|
||||
"""Collect incoming event messages and call the event handler.
|
||||
"""
|
||||
while not self._stop_event.is_set():
|
||||
while True:
|
||||
message = self._get_event(timeout=1)
|
||||
if message is None:
|
||||
continue
|
||||
|
|
Loading…
Reference in a new issue