diff --git a/src/anbox/cmds/session_manager.cpp b/src/anbox/cmds/session_manager.cpp index d0ce924..5a46566 100644 --- a/src/anbox/cmds/session_manager.cpp +++ b/src/anbox/cmds/session_manager.cpp @@ -146,9 +146,9 @@ anbox::cmds::SessionManager::SessionManager(const BusFactory &bus_factory) auto rt = Runtime::create(); auto dispatcher = anbox::common::create_dispatcher_for_runtime(rt); - container::Client container(rt); if (!standalone_) { - container.register_terminate_handler([&]() { + container_ = std::make_shared(rt); + container_->register_terminate_handler([&]() { WARNING("Lost connection to container manager, terminating."); trap->stop(); }); @@ -237,7 +237,7 @@ anbox::cmds::SessionManager::SessionManager(const BusFactory &bus_factory) {"/dev/fuse", "/dev/fuse"}, }; - dispatcher->dispatch([&]() { container.start(container_configuration); }); + dispatcher->dispatch([&]() { container_->start(container_configuration); }); } auto bus = bus_factory_(); @@ -251,7 +251,7 @@ anbox::cmds::SessionManager::SessionManager(const BusFactory &bus_factory) if (!standalone_) { // Stop the container which should close all open connections we have on // our side and should terminate all services. - container.stop(); + container_->stop(); } rt->stop(); diff --git a/src/anbox/cmds/session_manager.h b/src/anbox/cmds/session_manager.h index 498f5a5..25185ac 100644 --- a/src/anbox/cmds/session_manager.h +++ b/src/anbox/cmds/session_manager.h @@ -30,6 +30,9 @@ #include "anbox/graphics/rect.h" namespace anbox { +namespace container { +class Client; +} // namespace container namespace cmds { class SessionManager : public cli::CommandWithFlagsAndAction { public: @@ -40,6 +43,7 @@ class SessionManager : public cli::CommandWithFlagsAndAction { SessionManager(const BusFactory& bus_factory = session_bus_factory()); private: + std::shared_ptr container_; BusFactory bus_factory_; std::string desktop_file_hint_; graphics::GLRendererServer::Config::Driver gles_driver_;