From 041e4dbdf0a022657ff6a049dfa8963399618963 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Wed, 6 Feb 2019 09:03:39 +1000 Subject: [PATCH] cleanup old mplayer instances after crash fixes https://anki.tenderapp.com/discussions/ankidesktop/31908-no-consigo-renomear-meu-nome-no-anki --- anki/sound.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/anki/sound.py b/anki/sound.py index 8a2db4968..94e461c8e 100644 --- a/anki/sound.py +++ b/anki/sound.py @@ -142,10 +142,30 @@ def cleanupMPV(): # Mplayer in slave mode ########################################################################## +# if anki crashes, an old mplayer instance may be left lying around, +# which prevents renaming or deleting the profile +def cleanupOldMplayerProcesses(): + import psutil + + exeDir = os.path.dirname(os.path.abspath(sys.argv[0])) + + for proc in psutil.process_iter(attrs=['pid', 'name', 'exe']): + if not proc.info['exe'] or proc.info['name'] != 'mplayer.exe': + continue + + # not anki's bundled mplayer + if os.path.dirname(proc.info['exe']) != exeDir: + continue + + print("terminating old mplayer process...") + proc.kill() + mplayerCmd = ["mplayer", "-really-quiet", "-noautosub"] if isWin: mplayerCmd += ["-ao", "win32"] + cleanupOldMplayerProcesses() + mplayerQueue = [] mplayerManager = None mplayerReader = None