mirror of
https://github.com/ankitects/anki.git
synced 2025-09-23 08:22:24 -04:00
fix mplayer blocking on debug output
This commit is contained in:
parent
0cd3b517b3
commit
22efbaaf81
1 changed files with 16 additions and 1 deletions
|
@ -117,6 +117,19 @@ mplayerQueue = []
|
||||||
mplayerManager = None
|
mplayerManager = None
|
||||||
mplayerCond = threading.Condition()
|
mplayerCond = threading.Condition()
|
||||||
|
|
||||||
|
class MplayerReader(threading.Thread):
|
||||||
|
"Read any debugging info to prevent mplayer from blocking."
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
while 1:
|
||||||
|
mplayerCond.acquire()
|
||||||
|
mplayerCond.wait()
|
||||||
|
mplayerCond.release()
|
||||||
|
try:
|
||||||
|
mplayerManager.mplayer.stdout.read()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
class MplayerMonitor(threading.Thread):
|
class MplayerMonitor(threading.Thread):
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
@ -157,7 +170,7 @@ def queueMplayer(path):
|
||||||
path = path.encode(sys.getfilesystemencoding())
|
path = path.encode(sys.getfilesystemencoding())
|
||||||
mplayerCond.acquire()
|
mplayerCond.acquire()
|
||||||
mplayerQueue.append(path)
|
mplayerQueue.append(path)
|
||||||
mplayerCond.notify()
|
mplayerCond.notifyAll()
|
||||||
mplayerCond.release()
|
mplayerCond.release()
|
||||||
|
|
||||||
def clearMplayerQueue():
|
def clearMplayerQueue():
|
||||||
|
@ -190,6 +203,8 @@ def stopMplayerOnce():
|
||||||
|
|
||||||
mplayerManager = MplayerMonitor()
|
mplayerManager = MplayerMonitor()
|
||||||
mplayerManager.start()
|
mplayerManager.start()
|
||||||
|
mplayerReader = MplayerReader()
|
||||||
|
mplayerReader.start()
|
||||||
atexit.register(stopMplayer)
|
atexit.register(stopMplayer)
|
||||||
|
|
||||||
addHook("deckClosed", stopMplayerOnce)
|
addHook("deckClosed", stopMplayerOnce)
|
||||||
|
|
Loading…
Reference in a new issue