summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Keeler <jacob@livio.io>2021-12-13 15:26:50 -0500
committerJacob Keeler <jacob@livio.io>2021-12-13 15:26:50 -0500
commita6124935dddde61dc7975c632b89aa42eb9a1daf (patch)
treef21fceb77b21cbd9733cb492ab37038da6467ca9
parent3ad71b6ec4ea53a52d0f5fb5e99a14ab0eb99556 (diff)
downloadsdl_core-fix/update_app_list_timer_android_port.tar.gz
Destroy timer instead or restarting during app list updatefix/update_app_list_timer_android_port
-rw-r--r--src/components/application_manager/include/application_manager/application_manager_impl.h4
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc67
2 files changed, 56 insertions, 15 deletions
diff --git a/src/components/application_manager/include/application_manager/application_manager_impl.h b/src/components/application_manager/include/application_manager/application_manager_impl.h
index c59456a022..192472171d 100644
--- a/src/components/application_manager/include/application_manager/application_manager_impl.h
+++ b/src/components/application_manager/include/application_manager/application_manager_impl.h
@@ -1724,9 +1724,9 @@ class ApplicationManagerImpl
AMTelemetryObserver* metric_observer_;
#endif // TELEMETRY_MONITOR
- Timer application_list_update_timer_;
+ TimerSPtr application_list_update_timer_;
- Timer tts_global_properties_timer_;
+ TimerSPtr tts_global_properties_timer_;
Timer clear_pool_timer_;
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index 868d7f0fa0..db15dcc86d 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -193,13 +193,20 @@ ApplicationManagerImpl::ApplicationManagerImpl(
, pending_device_map_lock_ptr_(
std::make_shared<sync_primitives::RecursiveLock>())
, application_list_update_timer_(
- "AM ListUpdater",
- new TimerTaskImpl<ApplicationManagerImpl>(
- this, &ApplicationManagerImpl::OnApplicationListUpdateTimer))
+ std::make_shared<timer::Timer,
+ const char*,
+ ::timer::TimerTaskImpl<ApplicationManagerImpl>*>(
+ "AM ListUpdater",
+ new TimerTaskImpl<ApplicationManagerImpl>(
+ this, &ApplicationManagerImpl::OnApplicationListUpdateTimer)))
, tts_global_properties_timer_(
- "AM TTSGLPRTimer",
- new TimerTaskImpl<ApplicationManagerImpl>(
- this, &ApplicationManagerImpl::OnTimerSendTTSGlobalProperties))
+ std::make_shared<timer::Timer,
+ const char*,
+ ::timer::TimerTaskImpl<ApplicationManagerImpl>*>(
+ "AM TTSGLPRTimer",
+ new TimerTaskImpl<ApplicationManagerImpl>(
+ this,
+ &ApplicationManagerImpl::OnTimerSendTTSGlobalProperties)))
, clear_pool_timer_("ClearPoolTimer",
new TimerTaskImpl<ApplicationManagerImpl>(
this, &ApplicationManagerImpl::ClearTimerPool))
@@ -581,7 +588,18 @@ ApplicationSharedPtr ApplicationManagerImpl::RegisterApplication(
SDL_LOG_DEBUG("Restarting application list update timer");
GetPolicyHandler().OnAppsSearchStarted();
uint32_t timeout = get_settings().application_list_update_timeout();
- application_list_update_timer_.Start(timeout, timer::kSingleShot);
+ if (application_list_update_timer_->is_running() ||
+ application_list_update_timer_->is_completed()) {
+ application_list_update_timer_->Stop();
+ }
+ application_list_update_timer_ =
+ std::make_shared<timer::Timer,
+ const char*,
+ ::timer::TimerTaskImpl<ApplicationManagerImpl>*>(
+ "AM ListUpdater",
+ new TimerTaskImpl<ApplicationManagerImpl>(
+ this, &ApplicationManagerImpl::OnApplicationListUpdateTimer));
+ application_list_update_timer_->Start(timeout, timer::kSingleShot);
if (!is_all_apps_allowed_) {
SDL_LOG_WARN("RegisterApplication: access to app's disabled by user");
@@ -1660,7 +1678,18 @@ void ApplicationManagerImpl::OnFindNewApplicationsRequest() {
connection_handler().ConnectToAllDevices();
SDL_LOG_DEBUG("Starting application list update timer");
uint32_t timeout = get_settings().application_list_update_timeout();
- application_list_update_timer_.Start(timeout, timer::kSingleShot);
+ if (application_list_update_timer_->is_running() ||
+ application_list_update_timer_->is_completed()) {
+ application_list_update_timer_->Stop();
+ }
+ application_list_update_timer_ =
+ std::make_shared<timer::Timer,
+ const char*,
+ ::timer::TimerTaskImpl<ApplicationManagerImpl>*>(
+ "AM ListUpdater",
+ new TimerTaskImpl<ApplicationManagerImpl>(
+ this, &ApplicationManagerImpl::OnApplicationListUpdateTimer));
+ application_list_update_timer_->Start(timeout, timer::kSingleShot);
GetPolicyHandler().OnAppsSearchStarted();
}
@@ -2632,7 +2661,7 @@ bool ApplicationManagerImpl::Init(
bool ApplicationManagerImpl::Stop() {
SDL_LOG_AUTO_TRACE();
InitiateStopping();
- application_list_update_timer_.Stop();
+ application_list_update_timer_->Stop();
try {
if (unregister_reason_ ==
mobile_api::AppInterfaceUnregisteredReason::INVALID_ENUM) {
@@ -3326,7 +3355,7 @@ void ApplicationManagerImpl::UnregisterApplication(
while (applications_.end() != it_app) {
if (app_id == (*it_app)->app_id()) {
app_to_remove = *it_app;
- applications_.erase(it_app++);
+ applications_.erase(it_app);
break;
} else {
++it_app;
@@ -4300,7 +4329,19 @@ void ApplicationManagerImpl::AddAppToTTSGlobalPropertiesList(
SDL_LOG_INFO("Start tts_global_properties_timer_");
tts_global_properties_app_list_lock_.Release();
const uint32_t timeout_ms = 1000;
- tts_global_properties_timer_.Start(timeout_ms, timer::kSingleShot);
+ if (tts_global_properties_timer_->is_running() ||
+ tts_global_properties_timer_->is_completed()) {
+ tts_global_properties_timer_->Stop();
+ }
+ tts_global_properties_timer_ =
+ std::make_shared<timer::Timer,
+ const char*,
+ ::timer::TimerTaskImpl<ApplicationManagerImpl>*>(
+ "AM TTSGLPRTimer",
+ new TimerTaskImpl<ApplicationManagerImpl>(
+ this,
+ &ApplicationManagerImpl::OnTimerSendTTSGlobalProperties));
+ tts_global_properties_timer_->Start(timeout_ms, timer::kSingleShot);
return;
}
tts_global_properties_app_list_lock_.Release();
@@ -4319,7 +4360,7 @@ void ApplicationManagerImpl::RemoveAppFromTTSGlobalPropertiesList(
SDL_LOG_DEBUG("Stop tts_global_properties_timer_");
// if container is empty need to stop timer
tts_global_properties_app_list_lock_.Release();
- tts_global_properties_timer_.Stop();
+ tts_global_properties_timer_->Stop();
return;
}
}
@@ -4756,7 +4797,7 @@ void ApplicationManagerImpl::AddAppToRegisteredAppList(
SDL_LOG_DEBUG("App with app_id: "
<< application->app_id()
<< " has been added to registered applications list");
- if (application_list_update_timer_.is_running() &&
+ if (application_list_update_timer_->is_running() &&
!registered_during_timer_execution_) {
GetPolicyHandler().OnAddedNewApplicationToAppList(
application->app_id(), application->policy_app_id());