diff libervia/cli/loops.py @ 4141:ba8ddfdd334f

cli (loops): run GLib loop in same thread as asyncio: use the new `install_glib_asyncio_iteration` to run GLib in the same thread as asyncio. rel 426
author Goffi <goffi@goffi.org>
date Wed, 01 Nov 2023 14:05:53 +0100
parents 47401850dec6
children 0f8ea0768a3b
line wrap: on
line diff
--- a/libervia/cli/loops.py	Wed Nov 01 14:04:25 2023 +0100
+++ b/libervia/cli/loops.py	Wed Nov 01 14:05:53 2023 +0100
@@ -21,6 +21,7 @@
 import logging as log
 from libervia.backend.core.i18n import _
 from libervia.cli.constants import Const as C
+from libervia.frontends.tools import aio
 
 log.basicConfig(level=log.WARNING,
                 format='[%(name)s] %(message)s')
@@ -38,23 +39,22 @@
 def get_libervia_cli_loop(bridge_name):
     if 'dbus' in bridge_name:
         import signal
-        import threading
-        from gi.repository import GLib
 
         class LiberviaCLILoop:
 
+            def __init__(self):
+                self.loop = loop = asyncio.get_event_loop()
+
             def run(self, libervia_cli, args, namespace):
+                aio.install_glib_asyncio_iteration()
                 signal.signal(signal.SIGINT, self._on_sigint)
-                self._glib_loop = GLib.MainLoop()
-                threading.Thread(target=self._glib_loop.run).start()
-                loop = asyncio.get_event_loop()
+                loop = self.loop
                 loop.run_until_complete(libervia_cli.main(args=args, namespace=namespace))
                 loop.run_forever()
 
             def quit(self, exit_code):
                 loop = asyncio.get_event_loop()
                 loop.stop()
-                self._glib_loop.quit()
                 sys.exit(exit_code)
 
             def call_later(self, delay, callback, *args):