mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 08:46:37 -04:00
fix issues with media server not going away
- use a non-daemonized python thread - shut the server down on exit, including from profile manager - use a timeout on requests, or the connection that webengine holds open will block the thread and prevent it from exiting when anki closes
This commit is contained in:
parent
cfb50fa03c
commit
bee6931dc9
2 changed files with 14 additions and 4 deletions
10
aqt/main.py
10
aqt/main.py
|
@ -111,7 +111,7 @@ class AnkiQt(QMainWindow):
|
|||
f.setupUi(d)
|
||||
f.login.clicked.connect(self.onOpenProfile)
|
||||
f.profiles.itemDoubleClicked.connect(self.onOpenProfile)
|
||||
f.quit.clicked.connect(lambda: sys.exit(0))
|
||||
f.quit.clicked.connect(self.cleanupAndExit)
|
||||
f.add.clicked.connect(self.onAddProfile)
|
||||
f.rename.clicked.connect(self.onRenameProfile)
|
||||
f.delete_2.clicked.connect(self.onRemProfile)
|
||||
|
@ -249,8 +249,12 @@ To import into a password protected profile, please open the profile before atte
|
|||
if browser:
|
||||
self.showProfileManager()
|
||||
else:
|
||||
self.errorHandler.unload()
|
||||
sys.exit(0)
|
||||
self.cleanupAndExit()
|
||||
|
||||
def cleanupAndExit(self):
|
||||
self.errorHandler.unload()
|
||||
self.mediaServer.shutdown()
|
||||
self.app.exit(0)
|
||||
|
||||
# Collection load/unload
|
||||
##########################################################################
|
||||
|
|
|
@ -8,6 +8,7 @@ import http.server
|
|||
import socketserver
|
||||
import errno
|
||||
from anki.utils import devMode
|
||||
import threading
|
||||
|
||||
# locate web folder in source/binary distribution
|
||||
def _getExportFolder():
|
||||
|
@ -29,7 +30,7 @@ _exportFolder = _getExportFolder()
|
|||
class ThreadedHTTPServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
|
||||
pass
|
||||
|
||||
class MediaServer(QThread):
|
||||
class MediaServer(threading.Thread):
|
||||
|
||||
def run(self):
|
||||
self.port = 10000
|
||||
|
@ -46,8 +47,13 @@ class MediaServer(QThread):
|
|||
break
|
||||
self.server.serve_forever()
|
||||
|
||||
def shutdown(self):
|
||||
self.server.shutdown()
|
||||
|
||||
class RequestHandler(http.server.SimpleHTTPRequestHandler):
|
||||
|
||||
timeout = 1
|
||||
|
||||
def do_GET(self):
|
||||
f = self.send_head()
|
||||
if f:
|
||||
|
|
Loading…
Reference in a new issue