Parcourir la source

- make sure that the fixes above apply when rebooting app for theme change or for language change

Marius Stanciu il y a 6 ans
Parent
commit
a9d69a57fe
3 fichiers modifiés avec 26 ajouts et 4 suppressions
  1. 19 4
      FlatCAMApp.py
  2. 6 0
      FlatCAMTranslation.py
  3. 1 0
      README.md

+ 19 - 4
FlatCAMApp.py

@@ -5203,7 +5203,20 @@ class App(QtCore.QObject):
             del stgs
 
         log.debug("App.final_save() --> App UI state saved.")
-        self.th.quit()
+
+        # try to quit the QThread that run ArgsThread class
+        try:
+            self.th.quit()
+        except Exception:
+            pass
+
+        # try to quit the Socket opened by ArgsThread class
+        try:
+            self.new_launch.listener.close()
+        except Exception:
+            pass
+
+        # quit app by signalling for self.kill_app() method
         self.close_app_signal.emit()
 
     def kill_app(self):
@@ -12644,13 +12657,15 @@ class ArgsThread(QtCore.QObject):
 
     def __init__(self):
         super(ArgsThread, self).__init__()
+        self.listener = None
+
         self.start.connect(self.run)
 
     def my_loop(self, address):
         try:
-            listener = Listener(*address)
+            self.listener = Listener(*address)
             while True:
-                conn = listener.accept()
+                conn = self.listener.accept()
                 self.serve(conn)
         except socket.error:
             conn = Client(*address)
@@ -12659,7 +12674,7 @@ class ArgsThread(QtCore.QObject):
             # close the current instance only if there are args
             if len(sys.argv) > 1:
                 try:
-                    listener.close()
+                    self.listener.close()
                 except Exception:
                     pass
                 sys.exit()

+ 6 - 0
FlatCAMTranslation.py

@@ -183,6 +183,12 @@ def restart_program(app, ask=None):
     else:
         resource_loc = 'share'
 
+    # close the Socket in ArgsThread class
+    app.new_launch.listener.close()
+
+    # close the QThread that runs ArgsThread class
+    app.th.quit()
+
     if app.should_we_save and app.collection.get_list() or ask is True:
         msgbox = QtWidgets.QMessageBox()
         msgbox.setText(_("There are files/objects modified in FlatCAM. "

+ 1 - 0
README.md

@@ -12,6 +12,7 @@ CAD program, and create G-Code for Isolation routing.
 19.01.2020
 
 - fixed some bugs that are visible in Linux regarding the ArgsThread class: on app close we need to quit the QThread running the ArgsThread class and also close the opened Socket
+- make sure that the fixes above apply when rebooting app for theme change or for language change
 
 15.01.2020