From: Pawel Andruszkiewicz Date: Wed, 27 May 2015 12:30:55 +0000 (+0200) Subject: [MessagingEmail] Remove all listeners in destructor of MessageStorage. X-Git-Tag: submit/tizen_mobile/20150612.133019^2~2^2~118 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bfc437726e37ebf74acb0c93d191f47b6935ecae;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [MessagingEmail] Remove all listeners in destructor of MessageStorage. [Verification] TCT 309/293/1/15/0 (94.82%). Change-Id: Id2d26c1ebddc1e679fcf4dc2c3e948a607652259 Signed-off-by: Pawel Andruszkiewicz --- diff --git a/src/messaging/message_storage.cc b/src/messaging/message_storage.cc index 935bac24..27830fcd 100644 --- a/src/messaging/message_storage.cc +++ b/src/messaging/message_storage.cc @@ -19,9 +19,12 @@ MessageStorage::MessageStorage(int id, MessageType msgType) : LoggerD("Entered"); } -MessageStorage::~MessageStorage() -{ - LoggerD("Entered"); +MessageStorage::~MessageStorage() { + LoggerD("Entered"); + + for (auto id : registered_listeners_) { + ChangeListenerContainer::getInstance().removeChangeListener(id); + } } int MessageStorage::getMsgServiceId() const @@ -43,26 +46,33 @@ std::string MessageStorage::getMsgServiceTypeString() const { long MessageStorage::addMessagesChangeListener(std::shared_ptr callback) { LoggerD("Entered"); - return ChangeListenerContainer::getInstance().addMessageChangeListener(callback); + long id = ChangeListenerContainer::getInstance().addMessageChangeListener(callback); + registered_listeners_.insert(id); + return id; } long MessageStorage::addConversationsChangeListener( std::shared_ptr callback) { LoggerD("Entered"); - return ChangeListenerContainer::getInstance().addConversationChangeListener(callback); + long id = ChangeListenerContainer::getInstance().addConversationChangeListener(callback); + registered_listeners_.insert(id); + return id; } long MessageStorage::addFoldersChangeListener(std::shared_ptr callback) { LoggerD("Entered"); - return ChangeListenerContainer::getInstance().addFolderChangeListener(callback); + long id = ChangeListenerContainer::getInstance().addFolderChangeListener(callback); + registered_listeners_.insert(id); + return id; } void MessageStorage::removeChangeListener(long watchId) { LoggerD("Entered"); - return ChangeListenerContainer::getInstance().removeChangeListener(watchId); + ChangeListenerContainer::getInstance().removeChangeListener(watchId); + registered_listeners_.erase(watchId); } } //messaging diff --git a/src/messaging/message_storage.h b/src/messaging/message_storage.h index 7b7b89c3..0bf2251c 100644 --- a/src/messaging/message_storage.h +++ b/src/messaging/message_storage.h @@ -6,6 +6,7 @@ #define MESSAGING_MESSAGE_STORAGE_H_ #include +#include #include "common/platform_result.h" #include "common/logger.h" @@ -54,6 +55,7 @@ public: protected: int m_id; MessageType m_msg_type; + std::unordered_set registered_listeners_; }; } //messaging