From 198015c314ab0acc31a9866681f700d5d97ccc51 Mon Sep 17 00:00:00 2001 From: Simon Fels Date: Wed, 23 May 2018 14:26:47 +0200 Subject: [PATCH] dbus: make launch of application with package+component work --- src/anbox/cmds/launch.h | 2 +- src/anbox/dbus/skeleton/application_manager.cpp | 4 ++++ src/anbox/dbus/stub/application_manager.cpp | 10 +++++++--- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/anbox/cmds/launch.h b/src/anbox/cmds/launch.h index 4797aea..2aa3d0f 100644 --- a/src/anbox/cmds/launch.h +++ b/src/anbox/cmds/launch.h @@ -38,7 +38,7 @@ class Launch : public cli::CommandWithFlagsAndAction { bool try_launch_activity(const std::shared_ptr &stub); android::Intent intent_; - wm::Stack::Id stack_; + wm::Stack::Id stack_ = wm::Stack::Id::Default; bool use_system_dbus_ = false; }; } // namespace cmds diff --git a/src/anbox/dbus/skeleton/application_manager.cpp b/src/anbox/dbus/skeleton/application_manager.cpp index 44cf71e..f65902e 100644 --- a/src/anbox/dbus/skeleton/application_manager.cpp +++ b/src/anbox/dbus/skeleton/application_manager.cpp @@ -92,6 +92,10 @@ int ApplicationManager::method_launch(sd_bus_message *m, void *userdata, sd_bus_ if (r < 0) return r; } + + r = sd_bus_message_exit_container(m); + if (r < 0) + return r; } r = sd_bus_message_exit_container(m); diff --git a/src/anbox/dbus/stub/application_manager.cpp b/src/anbox/dbus/stub/application_manager.cpp index 6d75425..3487793 100644 --- a/src/anbox/dbus/stub/application_manager.cpp +++ b/src/anbox/dbus/stub/application_manager.cpp @@ -114,9 +114,13 @@ void ApplicationManager::launch(const android::Intent &intent, if (r < 0) throw std::runtime_error("Failed to construct DBus message"); - r = sd_bus_call(bus_->raw(), m, 0, nullptr, nullptr); - if (r < 0) - throw std::runtime_error("Failed to call Anbox application manager"); + sd_bus_error error = SD_BUS_ERROR_NULL; + r = sd_bus_call(bus_->raw(), m, 0, &error, nullptr); + if (r < 0) { + const auto msg = utils::string_format("%s", error.message); + sd_bus_error_free(&error); + throw std::runtime_error(msg); + } } core::Property& ApplicationManager::ready() {