diff options
author | Jacob Keeler <jacob.keeler@livioradio.com> | 2018-02-13 17:11:40 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-13 17:11:40 -0500 |
commit | b68ed092a8c1a59571d9ec253dafec01f98c4733 (patch) | |
tree | 609c9e45154d72fba4216dda7fa4d5b62aa1ddc5 /src | |
parent | 9824d88c49d7e509a41fc32b6ba3ed023ddc0f1d (diff) | |
parent | 29c586ce510e858c3cccff5cbf624b63dbda5f0f (diff) | |
download | sdl_core-b68ed092a8c1a59571d9ec253dafec01f98c4733.tar.gz |
Merge pull request #1950 from fronneburg/fix/Issue_1949
prevent deadlocks in EventDispatcherImpl::raise_event
Diffstat (limited to 'src')
-rw-r--r-- | src/components/application_manager/src/event_engine/event_dispatcher_impl.cc | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/components/application_manager/src/event_engine/event_dispatcher_impl.cc b/src/components/application_manager/src/event_engine/event_dispatcher_impl.cc index d0bc0c41ef..b19a6f9194 100644 --- a/src/components/application_manager/src/event_engine/event_dispatcher_impl.cc +++ b/src/components/application_manager/src/event_engine/event_dispatcher_impl.cc @@ -45,8 +45,10 @@ EventDispatcherImpl::EventDispatcherImpl() EventDispatcherImpl::~EventDispatcherImpl() {} void EventDispatcherImpl::raise_event(const Event& event) { + AutoLock observer_lock(observer_lock_); { - AutoLock auto_lock(state_lock_); + AutoLock state_lock(state_lock_); + // check if event is notification if (hmi_apis::messageType::notification == event.smart_object_type()) { const uint32_t notification_correlation_id = 0; @@ -61,12 +63,10 @@ void EventDispatcherImpl::raise_event(const Event& event) { } // Call observers - EventObserver* temp; while (!observers_.empty()) { - observer_lock_.Acquire(); - temp = *observers_.begin(); + EventObserver* temp = *observers_.begin(); observers_.erase(observers_.begin()); - observer_lock_.Release(); + AutoUnlock unlock_observer(observer_lock); temp->on_event(event); } } |