[Pkg-anonymity-tools] [onionshare] 44/140: does starting server work in a separate thread to keep GUI responsive

Ulrike Uhlig u-guest at moszumanska.debian.org
Mon Sep 29 20:33:46 UTC 2014


This is an automated email from the git hooks/post-receive script.

u-guest pushed a commit to branch master
in repository onionshare.

commit 9ed128938f3d10e86dda9b7b7c250a94cd372bea
Author: Micah Lee <micah at micahflee.com>
Date:   Thu Aug 28 16:16:41 2014 -0700

    does starting server work in a separate thread to keep GUI responsive
---
 onionshare_gui/onionshare_gui.py | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/onionshare_gui/onionshare_gui.py b/onionshare_gui/onionshare_gui.py
index 6f1803b..578746f 100644
--- a/onionshare_gui/onionshare_gui.py
+++ b/onionshare_gui/onionshare_gui.py
@@ -24,6 +24,9 @@ class Application(QtGui.QApplication):
         QtGui.QApplication.__init__(self, sys.argv)
 
 class OnionShareGui(QtGui.QWidget):
+    start_server_finished = QtCore.pyqtSignal()
+    stop_server_finished = QtCore.pyqtSignal()
+
     def __init__(self, qtapp, app):
         super(OnionShareGui, self).__init__()
         self.qtapp = qtapp
@@ -45,6 +48,8 @@ class OnionShareGui(QtGui.QWidget):
         self.server_status.server_started.connect(self.start_server)
         self.server_status.server_stopped.connect(self.file_selection.server_stopped)
         self.server_status.server_stopped.connect(self.stop_server)
+        self.start_server_finished.connect(self.server_status.start_server_finished)
+        self.stop_server_finished.connect(self.server_status.stop_server_finished)
         self.file_selection.file_list.files_updated.connect(self.server_status.update)
 
         # downloads
@@ -85,11 +90,15 @@ class OnionShareGui(QtGui.QWidget):
         t.daemon = True
         t.start()
 
-        # prepare the files for sending
-        web.set_file_info(self.file_selection.file_list.filenames)
-        self.app.cleanup_filenames.append(web.zip_filename)
+        # prepare the files for sending in a new thread
+        def finish_starting_server(self):
+            web.set_file_info(self.file_selection.file_list.filenames)
+            self.app.cleanup_filenames.append(web.zip_filename)
+            self.start_server_finished.emit()
 
-        self.server_status.start_server_finished()
+        t = threading.Thread(target=finish_starting_server, kwargs={'self':self})
+        t.daemon = True
+        t.start()
 
     def stop_server(self):
         # to stop flask, load http://127.0.0.1:<port>/<shutdown_slug>/shutdown
@@ -98,8 +107,7 @@ class OnionShareGui(QtGui.QWidget):
         except:
             pass
         self.app.cleanup()
-
-        self.server_status.stop_server_finished()
+        self.stop_server_finished.emit()
 
     def check_for_requests(self):
         self.update()

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/onionshare.git



More information about the Pkg-anonymity-tools mailing list