summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArtem Nosach <ANosach@luxoft.com>2015-05-10 22:36:44 +0300
committerArtem Nosach <ANosach@luxoft.com>2015-06-23 17:09:53 +0300
commite6f3f2be73f11b3955fa15ad9e91d38d6dc6bda1 (patch)
tree357c98864f19a392f8205e9ace17069d568bf04b
parent29dc04cf5eb7bb120695e526072517561b86f34c (diff)
downloadsmartdevicelink-e6f3f2be73f11b3955fa15ad9e91d38d6dc6bda1.tar.gz
Wake up streaming correctly.
-rw-r--r--src/components/application_manager/include/application_manager/application_manager_impl.h4
-rw-r--r--src/components/application_manager/src/application_impl.cc14
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc40
-rw-r--r--src/components/application_manager/test/mock/include/application_manager/application_manager_impl.h2
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));