Shut down IPC cleanly on exit.
This commit is contained in:
parent
6dc0bfa2d2
commit
a849901693
@ -633,6 +633,11 @@ class Application(QApplication):
|
||||
tabbed_browser = objreg.get('tabbed-browser', scope='window',
|
||||
window=win_id)
|
||||
tabbed_browser.shutdown()
|
||||
# Shut down IPC
|
||||
try:
|
||||
objreg.get('ipc-server').shutdown()
|
||||
except KeyError:
|
||||
pass
|
||||
# Save everything
|
||||
try:
|
||||
config_obj = objreg.get('config')
|
||||
|
@ -45,10 +45,7 @@ class IPCServer(QObject):
|
||||
def __init__(self, parent=None):
|
||||
"""Start the IPC server and listen to commands."""
|
||||
super().__init__(parent)
|
||||
ok = QLocalServer.removeServer(SOCKETNAME)
|
||||
if not ok:
|
||||
raise IPCError("Error while removing server {}!".format(
|
||||
SOCKETNAME))
|
||||
self._remove_server()
|
||||
self._server = QLocalServer(self)
|
||||
ok = self._server.listen(SOCKETNAME)
|
||||
if not ok:
|
||||
@ -56,6 +53,13 @@ class IPCServer(QObject):
|
||||
self._server.newConnection.connect(self.on_connection)
|
||||
self._socket = None
|
||||
|
||||
def _remove_server(self):
|
||||
"""Remove an existing server."""
|
||||
ok = QLocalServer.removeServer(SOCKETNAME)
|
||||
if not ok:
|
||||
raise IPCError("Error while removing server {}!".format(
|
||||
SOCKETNAME))
|
||||
|
||||
@pyqtSlot(int)
|
||||
def on_error(self, error):
|
||||
"""Convenience method which calls _socket_error on an error."""
|
||||
@ -89,6 +93,14 @@ class IPCServer(QObject):
|
||||
app = objreg.get('app')
|
||||
app.process_args(args)
|
||||
|
||||
def shutdown(self):
|
||||
"""Shut down the IPC server cleanly."""
|
||||
if self._socket is not None:
|
||||
self._socket.deleteLater()
|
||||
self._socket = None
|
||||
self._server.close()
|
||||
self._server.deleteLater()
|
||||
self._remove_server()
|
||||
|
||||
def init():
|
||||
"""Initialize the global IPC server."""
|
||||
|
Loading…
Reference in New Issue
Block a user