summaryrefslogtreecommitdiff
path: root/src/components/application_manager/src/application_manager_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/application_manager/src/application_manager_impl.cc')
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc35
1 files changed, 28 insertions, 7 deletions
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index 4a206e19cd..7b4920630b 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -3566,7 +3566,9 @@ void ApplicationManagerImpl::ForbidStreaming(
}
void ApplicationManagerImpl::OnAppStreaming(
- uint32_t app_id, protocol_handler::ServiceType service_type, bool state) {
+ uint32_t app_id,
+ protocol_handler::ServiceType service_type,
+ const Application::StreamingState new_state) {
SDL_LOG_AUTO_TRACE();
ApplicationSharedPtr app = application(app_id);
@@ -3577,12 +3579,31 @@ void ApplicationManagerImpl::OnAppStreaming(
}
DCHECK_OR_RETURN_VOID(media_manager_);
- if (state) {
- state_ctrl_.OnVideoStreamingStarted(app);
- media_manager_->StartStreaming(app_id, service_type);
- } else {
- media_manager_->StopStreaming(app_id, service_type);
- state_ctrl_.OnVideoStreamingStopped(app);
+ SDL_LOG_DEBUG("New state for service " << static_cast<int32_t>(service_type)
+ << " is "
+ << static_cast<int32_t>(new_state));
+ switch (new_state) {
+ case Application::StreamingState::kStopped: {
+ // Stop activity in media_manager_ when service is stopped
+ // State controller has been already notified by kSuspended event
+ // received before
+ media_manager_->StopStreaming(app_id, service_type);
+ break;
+ }
+
+ case Application::StreamingState::kStarted: {
+ // Apply temporary streaming state and start activity in media_manager_
+ state_ctrl_.OnVideoStreamingStarted(app);
+ media_manager_->StartStreaming(app_id, service_type);
+ break;
+ }
+
+ case Application::StreamingState::kSuspended: {
+ // Don't stop activity in media_manager_ in that case
+ // Just cancel the temporary streaming state
+ state_ctrl_.OnVideoStreamingStopped(app);
+ break;
+ }
}
}