From cca8af2d7d3494d887d9655f8e78244b5a2ca513 Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak Date: Fri, 30 Sep 2022 16:41:38 +0200 Subject: [PATCH] hardware-manager: Optionally stop the session on suspend This allows to use persist.waydroid.suspend as a way to automatically stop the session after an inactivity timeout, as opposed to merely freezing the container. Freeze still remains the default action. To use it this way, add to waydroid.cfg: suspend_action = stop --- tools/config/__init__.py | 6 ++++-- tools/services/hardware_manager.py | 8 +++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/tools/config/__init__.py b/tools/config/__init__.py index e889985..830dbb7 100644 --- a/tools/config/__init__.py +++ b/tools/config/__init__.py @@ -20,7 +20,8 @@ config_keys = ["arch", "images_path", "vendor_type", "system_datetime", - "vendor_datetime"] + "vendor_datetime", + "suspend_action"] session_config_keys = ["user_name", "user_id", @@ -46,7 +47,8 @@ defaults = { "preinstalled_images_paths": [ "/etc/waydroid-extra/images", "/usr/share/waydroid-extra/images", - ] + ], + "suspend_action": "freeze" } defaults["images_path"] = defaults["work"] + "/images" defaults["rootfs"] = defaults["work"] + "/rootfs" diff --git a/tools/services/hardware_manager.py b/tools/services/hardware_manager.py index 45c5110..8d21dd0 100644 --- a/tools/services/hardware_manager.py +++ b/tools/services/hardware_manager.py @@ -3,6 +3,8 @@ import logging import threading import tools.actions.container_manager +import tools.actions.session_manager +import tools.config from tools import helpers from tools.interfaces import IHardware @@ -16,7 +18,11 @@ def start(args): logging.debug("Function enableBluetooth not implemented") def suspend(): - tools.actions.container_manager.freeze(args) + cfg = tools.config.load(args) + if cfg["waydroid"]["suspend_action"] == "stop": + tools.actions.session_manager.stop(args) + else: + tools.actions.container_manager.freeze(args) def reboot(): helpers.lxc.stop(args) -- 2.47.3