X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/waydroid.git/blobdiff_plain/fb92d3a016a956e8520e938b59f55bd0fe9c2deb..35190fd1b2d2c48c02eaac6313661de5cc6a55cf:/tools/actions/container_manager.py diff --git a/tools/actions/container_manager.py b/tools/actions/container_manager.py index 29ba552..7321c14 100644 --- a/tools/actions/container_manager.py +++ b/tools/actions/container_manager.py @@ -26,9 +26,9 @@ class DbusContainerManager(dbus.service.Object): def Start(self, session): do_start(self.args, session) - @dbus.service.method("id.waydro.ContainerManager", in_signature='', out_signature='') - def Stop(self): - stop(self.args) + @dbus.service.method("id.waydro.ContainerManager", in_signature='b', out_signature='') + def Stop(self, quit_session): + stop(self.args, quit_session) @dbus.service.method("id.waydro.ContainerManager", in_signature='', out_signature='') def Freeze(self): @@ -123,15 +123,12 @@ def start(args): def do_start(args, session): if "session" in args: - logging.info("Already tracking a session") - return - - args.session = session + raise RuntimeError("Already tracking a session") # Networking command = [tools.config.tools_src + "/data/scripts/waydroid-net.sh", "start"] - tools.helpers.run.user(args, command, check=False) + tools.helpers.run.user(args, command) # Sensors if which("waydroid-sensord"): @@ -140,12 +137,12 @@ def do_start(args, session): # Mount rootfs cfg = tools.config.load(args) - helpers.images.mount_rootfs(args, cfg["waydroid"]["images_path"], args.session) + helpers.images.mount_rootfs(args, cfg["waydroid"]["images_path"], session) helpers.protocol.set_aidl_version(args) # Mount data - helpers.mount.bind(args, args.session["waydroid_data"], + helpers.mount.bind(args, session["waydroid_data"], tools.config.defaults["data"]) # Cgroup hacks @@ -167,7 +164,9 @@ def do_start(args, session): helpers.lxc.start(args) services.hardware_manager.start(args) -def stop(args): + args.session = session + +def stop(args, quit_session=True): try: services.hardware_manager.stop(args) status = helpers.lxc.status(args) @@ -201,10 +200,11 @@ def stop(args): helpers.mount.umount_all(args, tools.config.defaults["data"]) if "session" in args: - try: - os.kill(int(args.session["pid"]), signal.SIGUSR1) - except: - pass + if quit_session: + try: + os.kill(int(args.session["pid"]), signal.SIGUSR1) + except: + pass del args.session except: pass