diff options
author | Jacob Keeler <jacob@livio.io> | 2021-12-13 15:26:50 -0500 |
---|---|---|
committer | Jacob Keeler <jacob@livio.io> | 2021-12-13 15:26:50 -0500 |
commit | a6124935dddde61dc7975c632b89aa42eb9a1daf (patch) | |
tree | f21fceb77b21cbd9733cb492ab37038da6467ca9 | |
parent | 3ad71b6ec4ea53a52d0f5fb5e99a14ab0eb99556 (diff) | |
download | sdl_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.h | 4 | ||||
-rw-r--r-- | src/components/application_manager/src/application_manager_impl.cc | 67 |
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()); |