diff options
author | Ivan Alejandro <ivanalejandro0@gmail.com> | 2014-07-11 12:28:20 -0300 |
---|---|---|
committer | Ivan Alejandro <ivanalejandro0@gmail.com> | 2014-07-14 12:15:25 -0300 |
commit | 525433088d6fbe3392af90942272dfd5dd2511d6 (patch) | |
tree | f2d39458b283b09bb45433f72ab2655f7c1df9de | |
parent | 8186e43e1be9e70ab37c1dd923ac8f275c82b556 (diff) |
Use main process to run frontend.
Running the GUI in a child process gives problems on OSX.
Also, change signal handling since we have less processes.
-rw-r--r-- | src/leap/bitmask/app.py | 34 | ||||
-rw-r--r-- | src/leap/bitmask/frontend_app.py | 7 |
2 files changed, 6 insertions, 35 deletions
diff --git a/src/leap/bitmask/app.py b/src/leap/bitmask/app.py index fa244470..e80b9dd1 100644 --- a/src/leap/bitmask/app.py +++ b/src/leap/bitmask/app.py @@ -41,10 +41,8 @@ # (thanks to: http://www.glassgiant.com/ascii/) import multiprocessing import os -import signal import sys -from functools import partial from leap.bitmask.backend.utils import generate_certificates @@ -111,27 +109,6 @@ def do_mail_plumbing(opts): # XXX catch when import is used w/o acct -def sigterm_handler(logger, gui_process, backend_process, signum, frame): - """ - Signal handler that quits the running app cleanly. - - :param logger: the configured logger object. - :type logger: logging.Logger - :param gui_process: the GUI process - :type gui_process: multiprocessing.Process - :param backend_process: the backend process - :type backend_process: multiprocessing.Process - :param signum: number of the signal received (e.g. SIGINT -> 2) - :type signum: int - :param frame: current stack frame - :type frame: frame or None - """ - logger.debug("SIGTERM catched, terminating processes.") - gui_process.terminate() - # Don't terminate the backend, the frontend takes care of that. - # backend_process.terminate() - - def start_app(): """ Starts the main event loop and launches the main window. @@ -203,18 +180,13 @@ def start_app(): flags_dict = flags_to_dict() - app = lambda: run_frontend(options, flags_dict) - gui_process = multiprocessing.Process(target=app, name='Frontend') - gui_process.start() - backend = lambda: run_backend(opts.danger, flags_dict) backend_process = multiprocessing.Process(target=backend, name='Backend') + backend_process.daemon = True backend_process.start() - handle_sigterm = partial(sigterm_handler, logger, - gui_process, backend_process) - signal.signal(signal.SIGTERM, handle_sigterm) - signal.signal(signal.SIGINT, handle_sigterm) + run_frontend(options, flags_dict) + if __name__ == "__main__": diff --git a/src/leap/bitmask/frontend_app.py b/src/leap/bitmask/frontend_app.py index 95d36538..ffcb61ad 100644 --- a/src/leap/bitmask/frontend_app.py +++ b/src/leap/bitmask/frontend_app.py @@ -101,10 +101,9 @@ def run_frontend(options, flags_dict): window = MainWindow(start_hidden=start_hidden) - sigterm_handler = partial(signal_handler, window) - # ignore SIGINT since app.py takes care of signaling SIGTERM to us. - signal.signal(signal.SIGINT, signal.SIG_IGN) - signal.signal(signal.SIGTERM, sigterm_handler) + sig_handler = partial(signal_handler, window) + signal.signal(signal.SIGINT, sig_handler) + signal.signal(signal.SIGTERM, sig_handler) sys.exit(qApp.exec_()) |