summaryrefslogtreecommitdiff
path: root/src/components/application_manager/src
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/application_manager/src')
-rw-r--r--src/components/application_manager/src/app_launch/app_launch_ctrl_impl.cc9
-rw-r--r--src/components/application_manager/src/app_launch/device_apps_launcher.cc18
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc5
3 files changed, 32 insertions, 0 deletions
diff --git a/src/components/application_manager/src/app_launch/app_launch_ctrl_impl.cc b/src/components/application_manager/src/app_launch/app_launch_ctrl_impl.cc
index 4dafe9a8e6..05231b66b1 100644
--- a/src/components/application_manager/src/app_launch/app_launch_ctrl_impl.cc
+++ b/src/components/application_manager/src/app_launch/app_launch_ctrl_impl.cc
@@ -83,6 +83,7 @@ bool HmiLevelSorter(const std::pair<int32_t, ApplicationDataPtr>& lval,
void AppLaunchCtrlImpl::OnDeviceConnected(const std::string& device_mac) {
SDL_LOG_AUTO_TRACE();
+
std::vector<ApplicationDataPtr> apps_on_device =
app_launch_data_.GetApplicationDataByDevice(device_mac);
std::vector<std::pair<int32_t, ApplicationDataPtr> > apps_hmi_levels;
@@ -102,6 +103,7 @@ void AppLaunchCtrlImpl::OnDeviceConnected(const std::string& device_mac) {
std::back_inserter(apps_on_device),
GetAppFromHmiLevelPair);
if (apps_on_device.size() > 0) {
+ sync_primitives::AutoLock lock(device_apps_launcher_lock_);
device_apps_launcher_.LaunchAppsOnDevice(device_mac, apps_on_device);
} else {
SDL_LOG_DEBUG("No apps in saved for device " << device_mac);
@@ -112,4 +114,11 @@ void AppLaunchCtrlImpl::OnMasterReset() {
SDL_LOG_AUTO_TRACE();
app_launch_data_.Clear();
}
+
+void AppLaunchCtrlImpl::Stop() {
+ SDL_LOG_AUTO_TRACE();
+ sync_primitives::AutoLock lock(device_apps_launcher_lock_);
+ device_apps_launcher_.StopLaunchingAppsOnAllDevices();
+}
+
} // namespace app_launch
diff --git a/src/components/application_manager/src/app_launch/device_apps_launcher.cc b/src/components/application_manager/src/app_launch/device_apps_launcher.cc
index 5f36e41efb..1bf2bbf46d 100644
--- a/src/components/application_manager/src/app_launch/device_apps_launcher.cc
+++ b/src/components/application_manager/src/app_launch/device_apps_launcher.cc
@@ -157,6 +157,20 @@ bool DeviceAppsLauncherImpl::StopLaunchingAppsOnDevice(
return true;
}
+void DeviceAppsLauncherImpl::StopLaunchingAppsOnAllDevices() {
+ SDL_LOG_AUTO_TRACE();
+ sync_primitives::AutoLock lock(launchers_lock_);
+
+ std::for_each(works_launchers_.begin(),
+ works_launchers_.end(),
+ [this](LauncherPtr launcher) {
+ launcher->Clear();
+ free_launchers_.push_back(launcher);
+ });
+
+ works_launchers_.clear();
+}
+
bool DeviceAppsLauncher::LaunchAppsOnDevice(
const std::string& device_mac,
const std::vector<ApplicationDataPtr>& applications_to_launch) {
@@ -176,6 +190,10 @@ bool DeviceAppsLauncher::StopLaunchingAppsOnDevice(
return impl_->StopLaunchingAppsOnDevice(device_mac);
}
+void DeviceAppsLauncher::StopLaunchingAppsOnAllDevices() {
+ impl_->StopLaunchingAppsOnAllDevices();
+}
+
const AppLaunchSettings& DeviceAppsLauncher::settings() const {
return settings_;
}
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index e8e3912f9a..8f959460ca 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -2651,6 +2651,11 @@ bool ApplicationManagerImpl::Init(
bool ApplicationManagerImpl::Stop() {
SDL_LOG_AUTO_TRACE();
InitiateStopping();
+
+ if (app_launch_ctrl_) {
+ app_launch_ctrl_->Stop();
+ }
+
application_list_update_timer_.Stop();
try {
if (unregister_reason_ ==