def quit(self, exitCode=0): if self.mainWindow is not None: self.mainWindow.close() if self.settingsWindow is not None: self.settingsWindow.close() if self.serverThread != None and not sip.isdeleted(self.serverThread) and self.serverThread.isRunning(): self.serverThread.finished.disconnect(self.serverFinishedUnexpectedly) get_server().stop_server() getCoreLogger().info("Waiting maximal 30s for server to stop...") # wait maximal 30s if self.serverThread.wait(30000): getCoreLogger().info("server stopped") else: getCoreLogger().warning("server not stopped properly") else: getCoreLogger().info("server not running") if self.running: if get_settings().get_plugins_enabled(): get_plugin_manager().deactivatePlugins(get_plugin_manager().getAllPlugins(), save_state=False) getCoreLogger().info("all plug-ins deactivated") if self.mainWindow is not None: self.mainWindow.finish() if self.settingsWindow is not None: self.settingsWindow.finish() self.running = False finalExitCode = 0 if exitCode != 0: finalExitCode = exitCode elif self.exitCode != 0: finalExitCode = self.exitCode else: finalExitCode = get_server().exitCode get_settings().write_config_to_hd() DataReceiverThread.cleanup() self.exitCode = finalExitCode self._coldShutdown(finalExitCode) return finalExitCode