diff options
author | Artem Nosach <ANosach@luxoft.com> | 2015-05-10 22:36:44 +0300 |
---|---|---|
committer | Artem Nosach <ANosach@luxoft.com> | 2015-06-23 17:09:53 +0300 |
commit | e6f3f2be73f11b3955fa15ad9e91d38d6dc6bda1 (patch) | |
tree | 357c98864f19a392f8205e9ace17069d568bf04b | |
parent | 29dc04cf5eb7bb120695e526072517561b86f34c (diff) | |
download | smartdevicelink-e6f3f2be73f11b3955fa15ad9e91d38d6dc6bda1.tar.gz |
Wake up streaming correctly.
4 files changed, 26 insertions, 34 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 90d26ac88..1a82f5350 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 @@ -703,9 +703,11 @@ class ApplicationManagerImpl : public ApplicationManager, /** * @brief Callback calls when application starts/stops data streaming * @param app_id Streaming application id + * @param service_type Streaming service type * @param state Shows if streaming started or stopped */ - void OnAppStreaming(uint32_t app_id, bool state); + void OnAppStreaming( + uint32_t app_id, protocol_handler::ServiceType service_type, bool state); /** * @brief OnHMILevelChanged the callback that allows SDL to react when diff --git a/src/components/application_manager/src/application_impl.cc b/src/components/application_manager/src/application_impl.cc index 69b8c91bb..59b383044 100644 --- a/src/components/application_manager/src/application_impl.cc +++ b/src/components/application_manager/src/application_impl.cc @@ -434,6 +434,8 @@ void ApplicationImpl::StopStreaming( using namespace protocol_handler; LOG4CXX_AUTO_TRACE(logger_); + SuspendStreaming(service_type); + if (ServiceType::kMobileNav == service_type) { if (video_streaming_approved()) { video_stream_suspend_timer_->stop(); @@ -456,12 +458,14 @@ void ApplicationImpl::SuspendStreaming( if (ServiceType::kMobileNav == service_type) { video_stream_suspend_timer_->suspend(); - ApplicationManagerImpl::instance()->OnAppStreaming(app_id(), false); + ApplicationManagerImpl::instance()->OnAppStreaming( + app_id(), service_type, false); sync_primitives::AutoLock lock(video_streaming_suspended_lock_); video_streaming_suspended_ = true; } else if (ServiceType::kAudio == service_type) { audio_stream_suspend_timer_->suspend(); - ApplicationManagerImpl::instance()->OnAppStreaming(app_id(), false); + ApplicationManagerImpl::instance()->OnAppStreaming( + app_id(), service_type, false); sync_primitives::AutoLock lock(audio_streaming_suspended_lock_); audio_streaming_suspended_ = true; } @@ -476,7 +480,8 @@ void ApplicationImpl::WakeUpStreaming( if (ServiceType::kMobileNav == service_type) { sync_primitives::AutoLock lock(video_streaming_suspended_lock_); if (video_streaming_suspended_) { - ApplicationManagerImpl::instance()->OnAppStreaming(app_id(), true); + ApplicationManagerImpl::instance()->OnAppStreaming( + app_id(), service_type, true); MessageHelper::SendOnDataStreaming(ServiceType::kMobileNav, true); video_streaming_suspended_ = false; } @@ -484,7 +489,8 @@ void ApplicationImpl::WakeUpStreaming( } else if (ServiceType::kAudio == service_type) { sync_primitives::AutoLock lock(audio_streaming_suspended_lock_); if (audio_streaming_suspended_) { - ApplicationManagerImpl::instance()->OnAppStreaming(app_id(), true); + ApplicationManagerImpl::instance()->OnAppStreaming( + app_id(), service_type, true); MessageHelper::SendOnDataStreaming(ServiceType::kAudio, true); audio_streaming_suspended_ = false; } diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc index 6f01b3595..b8ba76541 100644 --- a/src/components/application_manager/src/application_manager_impl.cc +++ b/src/components/application_manager/src/application_manager_impl.cc @@ -992,11 +992,6 @@ bool ApplicationManagerImpl::StartNaviService( using namespace protocol_handler; LOG4CXX_AUTO_TRACE(logger_); - if (!media_manager_) { - LOG4CXX_DEBUG(logger_, "The media manager is not initialized."); - return false; - } - if (HMILevelAllowsStreaming(app_id, service_type)) { NaviServiceStatusMap::iterator it = navi_service_status_.find(app_id); @@ -1016,8 +1011,6 @@ bool ApplicationManagerImpl::StartNaviService( true : it->second.second = true; application(app_id)->StartStreaming(service_type); - media_manager_->StartStreaming(app_id, service_type); - return true; } return false; @@ -1041,12 +1034,6 @@ void ApplicationManagerImpl::StopNaviService( false : it->second.second = false; } - if (!media_manager_) { - LOG4CXX_DEBUG(logger_, "The media manager is not initialized."); - return; - } - media_manager_->StopStreaming(app_id, service_type); - ApplicationSharedPtr app = application(app_id); if (!app) { LOG4CXX_WARN(logger_, "An application is not registered."); @@ -2600,7 +2587,9 @@ void ApplicationManagerImpl::ForbidStreaming(uint32_t app_id) { EndNaviServices(app_id); } -void ApplicationManagerImpl::OnAppStreaming(uint32_t app_id, bool state) { +void ApplicationManagerImpl::OnAppStreaming( + uint32_t app_id, protocol_handler::ServiceType service_type, bool state) { + using namespace protocol_handler; LOG4CXX_AUTO_TRACE(logger_); ApplicationSharedPtr app = application(app_id); @@ -2608,8 +2597,15 @@ void ApplicationManagerImpl::OnAppStreaming(uint32_t app_id, bool state) { LOG4CXX_DEBUG(logger_, " There is no navi application with id: " << app_id); return; } - state ? state_ctrl_.OnNaviStreamingStarted() : - state_ctrl_.OnNaviStreamingStopped(); + DCHECK_OR_RETURN_VOID(media_manager_); + + if (state) { + state_ctrl_.OnNaviStreamingStarted(); + media_manager_->StartStreaming(app_id, service_type); + } else { + media_manager_->StopStreaming(app_id, service_type); + state_ctrl_.OnNaviStreamingStopped(); + } } void ApplicationManagerImpl::EndNaviServices(uint32_t app_id) { @@ -2756,15 +2752,9 @@ void ApplicationManagerImpl::DisallowStreaming(uint32_t app_id) { navi_service_status_.find(app_id); if (navi_service_status_.end() != it) { if (it->second.first) { - if (media_manager_) { - media_manager_->StopStreaming(app_id, ServiceType::kMobileNav); - } app->set_video_streaming_allowed(false); } if (it->second.second) { - if (media_manager_) { - media_manager_->StopStreaming(app_id, ServiceType::kAudio); - } app->set_audio_streaming_allowed(false); } } @@ -2784,15 +2774,9 @@ void ApplicationManagerImpl::AllowStreaming(uint32_t app_id) { navi_service_status_.find(app_id); if (navi_service_status_.end() != it) { if (it->second.first) { - if (media_manager_) { - media_manager_->StartStreaming(app_id, ServiceType::kMobileNav); - } app->set_video_streaming_allowed(true); } if (it->second.second) { - if (media_manager_) { - media_manager_->StartStreaming(app_id, ServiceType::kAudio); - } app->set_audio_streaming_allowed(true); } } diff --git a/src/components/application_manager/test/mock/include/application_manager/application_manager_impl.h b/src/components/application_manager/test/mock/include/application_manager/application_manager_impl.h index cbccdfd85..eb97730eb 100644 --- a/src/components/application_manager/test/mock/include/application_manager/application_manager_impl.h +++ b/src/components/application_manager/test/mock/include/application_manager/application_manager_impl.h @@ -250,7 +250,7 @@ class ApplicationManagerImpl : public ApplicationManager, MOCK_METHOD2(CanAppStream, bool(uint32_t, protocol_handler::ServiceType)); MOCK_METHOD1(EndNaviServices, void(int32_t)); MOCK_METHOD1(ForbidStreaming, void(int32_t)); - MOCK_METHOD2(OnAppStreaming, void(int32_t, bool)); + MOCK_METHOD2(OnAppStreaming, void(int32_t, protocol_handler::ServiceType, bool)); MOCK_METHOD1(Unmute, void(VRTTSSessionChanging)); MOCK_METHOD1(Mute, void(VRTTSSessionChanging)); |