diff options
author | AGaliuzov <AGaliuzov@luxoft.com> | 2015-07-17 16:20:33 +0300 |
---|---|---|
committer | AGaliuzov <AGaliuzov@luxoft.com> | 2015-07-17 16:20:33 +0300 |
commit | b983a57adad9b8ea3b9e3e2c53d6a9df62a3e13b (patch) | |
tree | f616a8c7a6bc88b73553c91c441e0ba46c8759a1 | |
parent | 41c23cc572f2177de2e1fc8a9fe34e6e671c6aba (diff) | |
parent | 914fe7958ef5e4ae1483070d5be3d38e142998f5 (diff) | |
download | smartdevicelink-b983a57adad9b8ea3b9e3e2c53d6a9df62a3e13b.tar.gz |
Merge pull request #161 from LuxoftSDL/hotfix/Core_crash_after_resuming_audio_video_streaming
Hotfix/core crash after resuming audio video streaming
3 files changed, 43 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..fc10597a6 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,9 @@ class StateController : public event_engine::EventObserver { template <bool SendActivateApp> void SetRegularState(ApplicationSharedPtr app, HmiStatePtr state) { - DCHECK_OR_RETURN_VOID(app); + if (!app) { + return; + } DCHECK_OR_RETURN_VOID(state); DCHECK_OR_RETURN_VOID(state->state_id() == HmiState::STATE_ID_REGULAR); @@ -90,7 +92,9 @@ 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); + if (!app) { + return; + } HmiStatePtr prev_regular = app->RegularHmiState(); DCHECK_OR_RETURN_VOID(prev_regular); HmiStatePtr hmi_state = CreateHmiState(app->app_id(), @@ -111,7 +115,9 @@ 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); + if (!app) { + return; + } HmiStatePtr prev_regular = app->RegularHmiState(); DCHECK_OR_RETURN_VOID(prev_regular); HmiStatePtr hmi_state = CreateHmiState(app->app_id(), @@ -135,7 +141,10 @@ 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); + if (!app) { + return; + } + HmiStatePtr hmi_state = CreateHmiState(app->app_id(), HmiState::StateID::STATE_ID_REGULAR); DCHECK_OR_RETURN_VOID(hmi_state); @@ -152,7 +161,9 @@ class StateController : public event_engine::EventObserver { */ void SetRegularState(ApplicationSharedPtr app, const mobile_apis::SystemContext::eType system_context) { - DCHECK_OR_RETURN_VOID(app); + if (!app) { + return; + } 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..720312adb 100644 --- a/src/components/application_manager/src/state_controller.cc +++ b/src/components/application_manager/src/state_controller.cc @@ -60,7 +60,9 @@ StateController::StateController():EventObserver() { void StateController::SetRegularState(ApplicationSharedPtr app, const mobile_apis::AudioStreamingState::eType audio_state) { - DCHECK_OR_RETURN_VOID(app); + if (!app) { + return; + } HmiStatePtr prev_state = app->RegularHmiState(); DCHECK_OR_RETURN_VOID(prev_state); HmiStatePtr hmi_state = CreateHmiState(app->app_id(), |