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_tv/20150603.064601^2~11
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=08dbb3c2e7c45f4de42583eae632abeeadb070aa;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 104ac2b6..7ce8304b 100755
--- a/src/messaging/message_storage.cc
+++ b/src/messaging/message_storage.cc
@@ -31,9 +31,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
@@ -55,26 +58,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 5e7da2fe..6db19f1d 100755
--- a/src/messaging/message_storage.h
+++ b/src/messaging/message_storage.h
@@ -18,6 +18,7 @@
#define MESSAGING_MESSAGE_STORAGE_H_
#include
+#include
#include "common/platform_result.h"
#include "common/logger.h"
@@ -66,6 +67,7 @@ public:
protected:
int m_id;
MessageType m_msg_type;
+ std::unordered_set registered_listeners_;
};
} //messaging