[ekiga] Use Ekiga::scoped_connections in the dialect implementation
- From: Julien Puydt <jpuydt src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ekiga] Use Ekiga::scoped_connections in the dialect implementation
- Date: Sun, 10 Feb 2013 07:53:57 +0000 (UTC)
commit a111c22e41030dd52fb2643dbf31609c9c0bd240
Author: Julien Puydt <jpuydt free fr>
Date: Sun Feb 10 08:53:04 2013 +0100
Use Ekiga::scoped_connections in the dialect implementation
lib/engine/chat/dialect-impl.h | 54 +++++----------------------------------
1 files changed, 7 insertions(+), 47 deletions(-)
---
diff --git a/lib/engine/chat/dialect-impl.h b/lib/engine/chat/dialect-impl.h
index 2e602d3..299aec3 100644
--- a/lib/engine/chat/dialect-impl.h
+++ b/lib/engine/chat/dialect-impl.h
@@ -38,6 +38,7 @@
#include "dialect.h"
+#include "scoped-connections.h"
#include "map-key-iterator.h"
#include "map-key-const-iterator.h"
@@ -55,10 +56,6 @@ namespace Ekiga
*/
DialectImpl ();
- /** The destructor.
- */
- ~DialectImpl ();
-
/** Triggers a callback for all simple chats of the Dialect.
* @param: The callback (the return value means "go on" and allows
* stopping the visit)
@@ -75,8 +72,8 @@ namespace Ekiga
/* More STL-like ways to access the chats within this Ekiga::DialectImpl
*/
- typedef typename std::map<boost::shared_ptr<SimpleChatType>, std::list<boost::signals::connection> > simple_chats_type;
- typedef typename std::map<boost::shared_ptr<MultipleChatType>, std::list<boost::signals::connection> > multiple_chats_type;
+ typedef typename std::map<boost::shared_ptr<SimpleChatType>, boost::shared_ptr<Ekiga::scoped_connections> > simple_chats_type;
+ typedef typename std::map<boost::shared_ptr<MultipleChatType>, boost::shared_ptr<Ekiga::scoped_connections> > multiple_chats_type;
typedef typename Ekiga::map_key_iterator<simple_chats_type> simple_iterator;
typedef typename Ekiga::map_key_const_iterator<simple_chats_type> simple_const_iterator;
@@ -134,33 +131,6 @@ Ekiga::DialectImpl<SimpleChatType, MultipleChatType>::DialectImpl ()
}
template<typename SimpleChatType, typename MultipleChatType>
-Ekiga::DialectImpl<SimpleChatType, MultipleChatType>::~DialectImpl ()
-{
- for (typename simple_chats_type::iterator iter = simple_chats.begin ();
- iter != simple_chats.end ();
- iter++) {
-
- for (std::list<boost::signals::connection>::iterator conn_iter = iter->second.begin ();
- conn_iter != iter->second.end ();
- ++conn_iter) {
-
- conn_iter->disconnect ();
- }
- }
- for (typename multiple_chats_type::iterator iter = multiple_chats.begin ();
- iter != multiple_chats.end ();
- iter++) {
-
- for (std::list<boost::signals::connection>::iterator conn_iter = iter->second.begin ();
- conn_iter != iter->second.end ();
- ++conn_iter) {
-
- conn_iter->disconnect ();
- }
- }
-}
-
-template<typename SimpleChatType, typename MultipleChatType>
void
Ekiga::DialectImpl<SimpleChatType, MultipleChatType>::visit_simple_chats (boost::function1<bool, SimpleChatPtr > visitor) const
{
@@ -248,7 +218,8 @@ template<typename SimpleChatType, typename MultipleChatType>
void
Ekiga::DialectImpl<SimpleChatType, MultipleChatType>::add_simple_chat (boost::shared_ptr<SimpleChatType> chat)
{
- simple_chats[chat].push_back (chat->removed.connect (boost::bind (&Ekiga::DialectImpl<SimpleChatType, MultipleChatType>::on_simple_chat_removed, this, chat)));
+ simple_chats[chat] = boost::shared_ptr<scoped_connections> (new scoped_connections);
+ simple_chats[chat]->add (chat->removed.connect (boost::bind (&Ekiga::DialectImpl<SimpleChatType, MultipleChatType>::on_simple_chat_removed, this, chat)));
simple_chat_added (chat);
}
@@ -263,7 +234,8 @@ template<typename SimpleChatType, typename MultipleChatType>
void
Ekiga::DialectImpl<SimpleChatType, MultipleChatType>::add_multiple_chat (boost::shared_ptr<MultipleChatType> chat)
{
- multiple_chats[chat].push_back (chat->removed.connect (boost::bind (&Ekiga::DialectImpl<SimpleChatType, MultipleChatType>::on_multiple_chat_removed, this, chat)));
+ multiple_chats[chat] = boost::shared_ptr<scoped_connections> (new scoped_connections);
+ multiple_chats[chat]->add (chat->removed.connect (boost::bind (&Ekiga::DialectImpl<SimpleChatType, MultipleChatType>::on_multiple_chat_removed, this, chat)));
multiple_chat_added (chat);
}
@@ -278,12 +250,6 @@ template<typename SimpleChatType, typename MultipleChatType>
void
Ekiga::DialectImpl<SimpleChatType, MultipleChatType>::on_simple_chat_removed (boost::shared_ptr<SimpleChatType> chat)
{
- for (typename std::list<boost::signals::connection>::iterator iter = simple_chats[chat].begin ();
- iter != simple_chats[chat].end ();
- ++iter) {
-
- iter->disconnect ();
- }
simple_chats.erase (chat);
}
@@ -291,12 +257,6 @@ template<typename SimpleChatType, typename MultipleChatType>
void
Ekiga::DialectImpl<SimpleChatType, MultipleChatType>::on_multiple_chat_removed (boost::shared_ptr<MultipleChatType> chat)
{
- for (typename std::list<boost::signals::connection>::iterator iter = multiple_chats[chat].begin ();
- iter != multiple_chats[chat].end ();
- ++iter) {
-
- iter->disconnect ();
- }
multiple_chats.erase (chat);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]