diff options
author | Alexander Kutsan <AKutsan@luxoft.com> | 2016-08-16 17:53:02 +0300 |
---|---|---|
committer | Alexander Kutsan <AKutsan@luxoft.com> | 2016-08-17 10:14:00 +0300 |
commit | 662dcbbf0e76cbf7ed3d5de45b5a4103082268e4 (patch) | |
tree | 62b5611a35fff31fb3d513c7ba2352e92d229502 | |
parent | 4969513b9860f35182fba41bc1cc07ebb144c637 (diff) | |
download | sdl_core-662dcbbf0e76cbf7ed3d5de45b5a4103082268e4.tar.gz |
Make HmiInterfacesImpl Thread safe
Related issue : APPLINK-20920
-rw-r--r-- | src/components/application_manager/include/application_manager/hmi_interfaces_impl.h | 3 | ||||
-rw-r--r-- | src/components/application_manager/src/hmi_interfaces_impl.cc | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/components/application_manager/include/application_manager/hmi_interfaces_impl.h b/src/components/application_manager/include/application_manager/hmi_interfaces_impl.h index 0f5bd0027e..3e2013738e 100644 --- a/src/components/application_manager/include/application_manager/hmi_interfaces_impl.h +++ b/src/components/application_manager/include/application_manager/hmi_interfaces_impl.h @@ -35,6 +35,8 @@ #include <map> #include "application_manager/hmi_interfaces.h" #include "utils/macro.h" +#include "utils/lock.h" + namespace application_manager { class HmiInterfacesImpl : public HmiInterfaces { @@ -49,6 +51,7 @@ class HmiInterfacesImpl : public HmiInterfaces { private: typedef std::map<InterfaceID, InterfaceState> InterfaceStatesMap; InterfaceStatesMap interfaces_states_; + sync_primitives::Lock interfaces_states_lock_; }; } // namespace application_manager #endif // SRC_COMPONENTS_APPLICATION_MANAGER_INCLUDE_APPLICATION_MANAGER_HMI_INTERFACES_IMPL_H_ diff --git a/src/components/application_manager/src/hmi_interfaces_impl.cc b/src/components/application_manager/src/hmi_interfaces_impl.cc index 452ad00386..08f5d3cc93 100644 --- a/src/components/application_manager/src/hmi_interfaces_impl.cc +++ b/src/components/application_manager/src/hmi_interfaces_impl.cc @@ -224,6 +224,7 @@ generate_function_to_interface_convert_map() { } HmiInterfacesImpl::HmiInterfacesImpl() { + sync_primitives::AutoLock autolock(interfaces_states_lock_); interfaces_states_[HmiInterfaces::HMI_INTERFACE_BasicCommunication] = HmiInterfaces::STATE_NOT_RESPONSE; interfaces_states_[HmiInterfaces::HMI_INTERFACE_Buttons] = @@ -244,6 +245,7 @@ HmiInterfacesImpl::HmiInterfacesImpl() { HmiInterfaces::InterfaceState HmiInterfacesImpl::GetInterfaceState( HmiInterfaces::InterfaceID interface) const { + sync_primitives::AutoLock autolock(interfaces_states_lock_); const InterfaceStatesMap::const_iterator it = interfaces_states_.find(interface); // all interfaces should be presented in interfaces_states_ map. @@ -253,6 +255,7 @@ HmiInterfaces::InterfaceState HmiInterfacesImpl::GetInterfaceState( void HmiInterfacesImpl::SetInterfaceState(HmiInterfaces::InterfaceID interface, HmiInterfaces::InterfaceState state) { + sync_primitives::AutoLock autolock(interfaces_states_lock_); DCHECK(interfaces_states_.find(interface) != interfaces_states_.end()); interfaces_states_[interface] = state; } |