From 15a27ec8b63423e8f4f022968a662a2af36ecd3f Mon Sep 17 00:00:00 2001 From: Simon Fels Date: Sat, 10 Jun 2017 16:36:56 +0200 Subject: [PATCH 1/2] Add command line option to use system dbus --- src/anbox/cmds/session_manager.cpp | 18 +++++++++--------- src/anbox/cmds/session_manager.h | 8 ++------ 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/anbox/cmds/session_manager.cpp b/src/anbox/cmds/session_manager.cpp index 946a370..6ec5fd9 100644 --- a/src/anbox/cmds/session_manager.cpp +++ b/src/anbox/cmds/session_manager.cpp @@ -85,16 +85,9 @@ std::istream& operator>>(std::istream& in, anbox::graphics::GLRendererServer::Co } } -anbox::cmds::SessionManager::BusFactory anbox::cmds::SessionManager::session_bus_factory() { - return []() { - return std::make_shared(core::dbus::WellKnownBus::session); - }; -} - -anbox::cmds::SessionManager::SessionManager(const BusFactory &bus_factory) +anbox::cmds::SessionManager::SessionManager() : CommandWithFlagsAndAction{cli::Name{"session-manager"}, cli::Usage{"session-manager"}, cli::Description{"Run the the anbox session manager"}}, - bus_factory_(bus_factory), window_size_(default_single_window_size) { // Just for the purpose to allow QtMir (or unity8) to find this on our // /proc/*/cmdline @@ -117,6 +110,9 @@ anbox::cmds::SessionManager::SessionManager(const BusFactory &bus_factory) flag(cli::make_flag(cli::Name{"experimental"}, cli::Description{"Allows users to use experimental features"}, experimental_)); + flag(cli::make_flag(cli::Name{"use-system-dbus"}, + cli::Description{"Use system instead of session DBus"}, + use_system_dbus_)); action([this](const cli::Command::Context &) { auto trap = core::posix::trap_signals_for_process( @@ -248,7 +244,11 @@ anbox::cmds::SessionManager::SessionManager(const BusFactory &bus_factory) dispatcher->dispatch([&]() { container_->start(container_configuration); }); } - auto bus = bus_factory_(); + auto bus_type = core::dbus::WellKnownBus::session; + if (use_system_dbus_) + bus_type = core::dbus::WellKnownBus::system; + + auto bus = std::make_shared(bus_type); bus->install_executor(core::dbus::asio::make_executor(bus, rt->service())); auto skeleton = anbox::dbus::skeleton::Service::create_for_bus(bus, app_manager); diff --git a/src/anbox/cmds/session_manager.h b/src/anbox/cmds/session_manager.h index 25185ac..77e75c6 100644 --- a/src/anbox/cmds/session_manager.h +++ b/src/anbox/cmds/session_manager.h @@ -36,21 +36,17 @@ class Client; namespace cmds { class SessionManager : public cli::CommandWithFlagsAndAction { public: - typedef std::function BusFactory; - - static BusFactory session_bus_factory(); - - SessionManager(const BusFactory& bus_factory = session_bus_factory()); + SessionManager(); private: std::shared_ptr container_; - BusFactory bus_factory_; std::string desktop_file_hint_; graphics::GLRendererServer::Config::Driver gles_driver_; bool single_window_ = false; graphics::Rect window_size_; bool standalone_ = false; bool experimental_ = false; + bool use_system_dbus_ = false; }; } // namespace cmds } // namespace anbox From 43244baa119e32ac38e0b49f077ef59d3919f8fb Mon Sep 17 00:00:00 2001 From: Simon Fels Date: Sun, 9 Jul 2017 21:22:21 +0200 Subject: [PATCH 2/2] Add argument for launch command to use system dbus --- src/anbox/cmds/launch.cpp | 9 ++++++++- src/anbox/cmds/launch.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/anbox/cmds/launch.cpp b/src/anbox/cmds/launch.cpp index 3e0f885..ac3b277 100644 --- a/src/anbox/cmds/launch.cpp +++ b/src/anbox/cmds/launch.cpp @@ -77,6 +77,9 @@ anbox::cmds::Launch::Launch() flag(cli::make_flag(cli::Name{"stack"}, cli::Description{"Which window stack the activity should be started on. Possible: default, fullscreen, freeform"}, stack_)); + flag(cli::make_flag(cli::Name{"use-system-dbus"}, + cli::Description{"Use system instead of session DBus"}, + use_system_dbus_)); action([this](const cli::Command::Context&) { if (!intent_.valid()) { @@ -92,7 +95,11 @@ anbox::cmds::Launch::Launch() auto rt = Runtime::create(); - auto bus = std::make_shared(core::dbus::WellKnownBus::session); + auto bus_type = core::dbus::WellKnownBus::session; + if (use_system_dbus_) + bus_type = core::dbus::WellKnownBus::system; + + auto bus = std::make_shared(bus_type); bus->install_executor(core::dbus::asio::make_executor(bus, rt->service())); const auto snap_path = utils::get_env_value("SNAP"); diff --git a/src/anbox/cmds/launch.h b/src/anbox/cmds/launch.h index 7fc71c9..b555c41 100644 --- a/src/anbox/cmds/launch.h +++ b/src/anbox/cmds/launch.h @@ -38,6 +38,7 @@ class Launch : public cli::CommandWithFlagsAndAction { android::Intent intent_; wm::Stack::Id stack_; + bool use_system_dbus_ = false; }; } // namespace cmds } // namespace anbox