]> glassweightruler.freedombox.rocks Git - waydroid.git/blobdiff - tools/services/hardware_manager.py
IHardware: Add new upgrade transaction capable of 64-bit timestamps
[waydroid.git] / tools / services / hardware_manager.py
index 529348dc102f5e521444842d1d08af6f47f36b7b..76104cbfdf1f8c02773e638e38788914eaad7f1f 100644 (file)
@@ -3,9 +3,12 @@
 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
 
+stopping = False
 
 def start(args):
     def enableNFC(enable):
@@ -15,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)
@@ -26,17 +33,24 @@ def start(args):
         helpers.images.umount_rootfs(args)
         helpers.images.replace(args, system_zip, system_time,
                                vendor_zip, vendor_time)
-        helpers.images.mount_rootfs(args, args.images_path)
+        args.session["background_start"] = "false"
+        helpers.images.mount_rootfs(args, args.images_path, args.session)
+        helpers.protocol.set_aidl_version(args)
         helpers.lxc.start(args)
 
     def service_thread():
-        IHardware.add_service(
-            args, enableNFC, enableBluetooth, suspend, reboot, upgrade)
+        while not stopping:
+            IHardware.add_service(
+                args, enableNFC, enableBluetooth, suspend, reboot, upgrade)
 
+    global stopping
+    stopping = False
     args.hardware_manager = threading.Thread(target=service_thread)
     args.hardware_manager.start()
 
 def stop(args):
+    global stopping
+    stopping = True
     try:
         if args.hardwareLoop:
             args.hardwareLoop.quit()