- cfg["session"]["lcd_density"] = dpi
- tools.config.save_session(cfg)
-
- container_state = "IDLE"
- signal.signal(signal.SIGINT, signal_handler)
- while os.path.exists(tools.config.session_defaults["config_path"]):
- session_cfg = tools.config.load_session()
- if container_state != session_cfg["session"]["state"]:
- if session_cfg["session"]["state"] == "RUNNING":
- services.user_manager.start(args, unlocked_cb)
- services.clipboard_manager.start(args)
- if unlocked_cb:
- unlocked_cb = None
- elif session_cfg["session"]["state"] == "STOPPED":
- services.user_manager.stop(args)
- services.clipboard_manager.stop(args)
- container_state = session_cfg["session"]["state"]
- time.sleep(1)
+ session["lcd_density"] = dpi
+
+ session["background_start"] = "true" if background else "false"
+
+ mainloop = GLib.MainLoop()
+
+ def sigint_handler(data):
+ do_stop(args, mainloop)
+ stop_container(quit_session=False)
+
+ def sigusr_handler(data):
+ do_stop(args, mainloop)
+
+ GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGHUP, sigint_handler, None)
+ GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGINT, sigint_handler, None)
+ GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGTERM, sigint_handler, None)
+ GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGUSR1, sigusr_handler, None)
+ try:
+ tools.helpers.ipc.DBusContainerService().Start(session)
+ except dbus.DBusException as e:
+ logging.debug(e)
+ if e.get_dbus_name().startswith("org.freedesktop.DBus.Python"):
+ logging.error(e.get_dbus_message().splitlines()[-1])
+ else:
+ logging.error("WayDroid container is not listening")
+ sys.exit(0)
+
+ services.user_manager.start(args, session, unlocked_cb)
+ services.clipboard_manager.start(args)
+ service(args, mainloop)
+
+def do_stop(args, looper):