diff options
author | Aleksandar Donchev <Aleksander.Donchev@partner.bmw.de> | 2017-04-06 16:21:34 +0200 |
---|---|---|
committer | Christian Linke <christian.linke@bmw.de> | 2017-05-02 06:25:51 -0700 |
commit | 8f2d32de915abd07dee07de9cbc8b679e947e8ba (patch) | |
tree | 1a90916306b7e02234c8d9dd5beca95826e14ee7 /AudioManagerCore | |
parent | da78ca5c2eb7e2ff2f9153361774156f8a454daa (diff) | |
download | audiomanager-8f2d32de915abd07dee07de9cbc8b679e947e8ba.tar.gz |
The database observer reverse pointer to the handler is initialized in registerObserver.
Signed-off-by: Christian Linke <christian.linke@bmw.de>
Change-Id: I5a1c23436ac9bcc37c76a12245c731f327cab0d4
Diffstat (limited to 'AudioManagerCore')
-rw-r--r-- | AudioManagerCore/src/CAmDatabaseHandlerMap.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/AudioManagerCore/src/CAmDatabaseHandlerMap.cpp b/AudioManagerCore/src/CAmDatabaseHandlerMap.cpp index 48ef37b..cc95d28 100644 --- a/AudioManagerCore/src/CAmDatabaseHandlerMap.cpp +++ b/AudioManagerCore/src/CAmDatabaseHandlerMap.cpp @@ -3393,22 +3393,20 @@ am_Error_e CAmDatabaseHandlerMap::enumerateConverters(std::function<void(const a bool CAmDatabaseHandlerMap::registerObserver(IAmDatabaseObserver * iObserver) { assert(iObserver!=NULL); - if (std::find(mDatabaseObservers.begin(), mDatabaseObservers.end(), - iObserver) == mDatabaseObservers.end()) { - mDatabaseObservers.push_back( - dynamic_cast<AmDatabaseObserverCallbacks*>(iObserver)), dynamic_cast<AmDatabaseObserverCallbacks*>(iObserver)->mpDatabaseHandler = - nullptr; + if (std::find(mDatabaseObservers.begin(), mDatabaseObservers.end(), iObserver) == mDatabaseObservers.end()) + { + mDatabaseObservers.push_back(static_cast<AmDatabaseObserverCallbacks*>(iObserver)); + static_cast<AmDatabaseObserverCallbacks*>(iObserver)->mpDatabaseHandler = this; return true; } return false; } bool CAmDatabaseHandlerMap::unregisterObserver(IAmDatabaseObserver * iObserver) { assert(iObserver!=NULL); - auto it = std::find(mDatabaseObservers.begin(), mDatabaseObservers.end(), - iObserver); + auto it = std::find(mDatabaseObservers.begin(), mDatabaseObservers.end(), iObserver); if (it != mDatabaseObservers.end()) { - mDatabaseObservers.erase(it), dynamic_cast<AmDatabaseObserverCallbacks*>(iObserver)->mpDatabaseHandler = - nullptr; + mDatabaseObservers.erase(it); + static_cast<AmDatabaseObserverCallbacks*>(iObserver)->mpDatabaseHandler = nullptr; return true; } return false; |