summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordtrunov <dtrunov@luxoft.com>2015-05-28 13:12:46 +0300
committerdtrunov <dtrunov@luxoft.com>2015-07-17 11:34:01 +0300
commitf6a30dda295c715c4b9180f3133f98302e4efd96 (patch)
treeca9c3f78e4fae23bfd5dcf49d6308aa69f48f60d
parent89f3a68b46674e5e88d3da612ea50287b8b317ff (diff)
downloadsmartdevicelink-f6a30dda295c715c4b9180f3133f98302e4efd96.tar.gz
Fixed core crash after resuming audio/video streaming
-rw-r--r--src/components/application_manager/include/application_manager/application_manager_impl.h24
-rw-r--r--src/components/application_manager/include/application_manager/state_controller.h7
-rw-r--r--src/components/application_manager/src/state_controller.cc1
3 files changed, 26 insertions, 6 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 1a82f5350..0046b4bf4 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
@@ -429,6 +429,10 @@ class ApplicationManagerImpl : public ApplicationManager,
void SetState(uint32_t app_id,
mobile_apis::AudioStreamingState::eType audio_state) {
ApplicationSharedPtr app = application(app_id);
+ if (!app) {
+ LOG4CXX_ERROR(logger_, "Application with appID="<<app_id<<" does not exist");
+ return;
+ }
state_ctrl_.SetRegularState(app, audio_state);
}
@@ -442,6 +446,10 @@ class ApplicationManagerImpl : public ApplicationManager,
void SetState(uint32_t app_id,
HmiStatePtr new_state) {
ApplicationSharedPtr app = application(app_id);
+ if (!app) {
+ LOG4CXX_ERROR(logger_, "Application with appID="<<app_id<<" does not exist");
+ return;
+ }
state_ctrl_.SetRegularState<SendActivateApp>(app, new_state);
}
@@ -454,6 +462,10 @@ class ApplicationManagerImpl : public ApplicationManager,
void SetState(uint32_t app_id,
mobile_apis::HMILevel::eType hmi_level){
ApplicationSharedPtr app = application(app_id);
+ if (!app) {
+ LOG4CXX_ERROR(logger_, "Application with appID="<<app_id<<" does not exist");
+ return;
+ }
state_ctrl_.SetRegularState<SendActivateApp>(app, hmi_level);
}
@@ -469,6 +481,10 @@ class ApplicationManagerImpl : public ApplicationManager,
mobile_apis::HMILevel::eType hmi_level,
mobile_apis::AudioStreamingState::eType audio_state){
ApplicationSharedPtr app = application(app_id);
+ if (!app) {
+ LOG4CXX_ERROR(logger_, "Application with appID="<<app_id<<" does not exist");
+ return;
+ }
state_ctrl_.SetRegularState<SendActivateApp>(app, hmi_level, audio_state);
}
@@ -484,6 +500,10 @@ class ApplicationManagerImpl : public ApplicationManager,
mobile_apis::AudioStreamingState::eType audio_state,
mobile_apis::SystemContext::eType system_context) {
ApplicationSharedPtr app = application(app_id);
+ if (!app) {
+ LOG4CXX_ERROR(logger_, "Application with appID="<<app_id<<" does not exist");
+ return;
+ }
state_ctrl_.SetRegularState<SendActivateApp>(app, hmi_level,
audio_state, system_context);
}
@@ -496,6 +516,10 @@ class ApplicationManagerImpl : public ApplicationManager,
void SetState(uint32_t app_id,
mobile_apis::SystemContext::eType system_context) {
ApplicationSharedPtr app = application(app_id);
+ if (!app) {
+ LOG4CXX_ERROR(logger_, "Application with appID="<<app_id<<" does not exist");
+ return;
+ }
state_ctrl_.SetRegularState(app, system_context);
}
diff --git a/src/components/application_manager/include/application_manager/state_controller.h b/src/components/application_manager/include/application_manager/state_controller.h
index b57070c35..d4a2b9fc8 100644
--- a/src/components/application_manager/include/application_manager/state_controller.h
+++ b/src/components/application_manager/include/application_manager/state_controller.h
@@ -58,7 +58,6 @@ class StateController : public event_engine::EventObserver {
template <bool SendActivateApp>
void SetRegularState(ApplicationSharedPtr app,
HmiStatePtr state) {
- DCHECK_OR_RETURN_VOID(app);
DCHECK_OR_RETURN_VOID(state);
DCHECK_OR_RETURN_VOID(state->state_id() == HmiState::STATE_ID_REGULAR);
@@ -90,7 +89,6 @@ class StateController : public event_engine::EventObserver {
void SetRegularState(ApplicationSharedPtr app,
const mobile_apis::HMILevel::eType hmi_level,
const mobile_apis::AudioStreamingState::eType audio_state) {
- DCHECK_OR_RETURN_VOID(app);
HmiStatePtr prev_regular = app->RegularHmiState();
DCHECK_OR_RETURN_VOID(prev_regular);
HmiStatePtr hmi_state = CreateHmiState(app->app_id(),
@@ -111,7 +109,6 @@ class StateController : public event_engine::EventObserver {
template <bool SendActivateApp>
void SetRegularState(ApplicationSharedPtr app,
const mobile_apis::HMILevel::eType hmi_level) {
- DCHECK_OR_RETURN_VOID(app);
HmiStatePtr prev_regular = app->RegularHmiState();
DCHECK_OR_RETURN_VOID(prev_regular);
HmiStatePtr hmi_state = CreateHmiState(app->app_id(),
@@ -135,7 +132,7 @@ class StateController : public event_engine::EventObserver {
const mobile_apis::HMILevel::eType hmi_level,
const mobile_apis::AudioStreamingState::eType audio_state,
const mobile_apis::SystemContext::eType system_context) {
- DCHECK_OR_RETURN_VOID(app);
+
HmiStatePtr hmi_state = CreateHmiState(app->app_id(),
HmiState::StateID::STATE_ID_REGULAR);
DCHECK_OR_RETURN_VOID(hmi_state);
@@ -152,7 +149,7 @@ class StateController : public event_engine::EventObserver {
*/
void SetRegularState(ApplicationSharedPtr app,
const mobile_apis::SystemContext::eType system_context) {
- DCHECK_OR_RETURN_VOID(app);
+
HmiStatePtr prev_regular = app->RegularHmiState();
DCHECK_OR_RETURN_VOID(prev_regular);
HmiStatePtr hmi_state = CreateHmiState(app->app_id(),
diff --git a/src/components/application_manager/src/state_controller.cc b/src/components/application_manager/src/state_controller.cc
index 0434e471f..1c335d710 100644
--- a/src/components/application_manager/src/state_controller.cc
+++ b/src/components/application_manager/src/state_controller.cc
@@ -60,7 +60,6 @@ StateController::StateController():EventObserver() {
void StateController::SetRegularState(ApplicationSharedPtr app,
const mobile_apis::AudioStreamingState::eType audio_state) {
- DCHECK_OR_RETURN_VOID(app);
HmiStatePtr prev_state = app->RegularHmiState();
DCHECK_OR_RETURN_VOID(prev_state);
HmiStatePtr hmi_state = CreateHmiState(app->app_id(),