From fdc6ee56ded13f0f268c0d3ff45e50d402e1fe63 Mon Sep 17 00:00:00 2001 From: rakshasa Date: Sat, 7 Apr 2012 15:06:25 +0900 Subject: [PATCH] Removed sigc++ signal from ConnectionList. --- src/ui/element_peer_list.cc | 14 ++++++++++---- src/ui/element_peer_list.h | 8 ++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/ui/element_peer_list.cc b/src/ui/element_peer_list.cc index b3059c82..d2acf0c7 100644 --- a/src/ui/element_peer_list.cc +++ b/src/ui/element_peer_list.cc @@ -65,8 +65,12 @@ ElementPeerList::ElementPeerList(core::Download* d) : std::for_each(m_download->download()->connection_list()->begin(), m_download->download()->connection_list()->end(), rak::bind1st(std::mem_fun(&PList::push_back), &m_list)); - m_connPeerConnected = m_download->download()->connection_list()->signal_connected().connect(sigc::mem_fun(*this, &ElementPeerList::receive_peer_connected)); - m_connPeerDisconnected = m_download->download()->connection_list()->signal_disconnected().connect(sigc::mem_fun(*this, &ElementPeerList::receive_peer_disconnected)); + torrent::ConnectionList* connection_list = m_download->download()->connection_list(); + + m_peer_connected = connection_list->signal_connected().insert(connection_list->signal_connected().end(), + tr1::bind(&ElementPeerList::receive_peer_connected, this, tr1::placeholders::_1)); + m_peer_disconnected = connection_list->signal_disconnected().insert(connection_list->signal_disconnected().end(), + tr1::bind(&ElementPeerList::receive_peer_disconnected, this, tr1::placeholders::_1)); m_windowList = new display::WindowPeerList(m_download, &m_list, &m_listItr); m_elementInfo = create_info(); @@ -84,8 +88,10 @@ ElementPeerList::ElementPeerList(core::Download* d) : } ElementPeerList::~ElementPeerList() { - m_connPeerConnected.disconnect(); - m_connPeerDisconnected.disconnect(); + torrent::ConnectionList* connection_list = m_download->download()->connection_list(); + + connection_list->signal_connected().erase(m_peer_connected); + connection_list->signal_disconnected().erase(m_peer_disconnected); delete m_windowList; delete m_elementInfo; diff --git a/src/ui/element_peer_list.h b/src/ui/element_peer_list.h index 680d1e39..12f78899 100644 --- a/src/ui/element_peer_list.h +++ b/src/ui/element_peer_list.h @@ -37,6 +37,8 @@ #ifndef RTORRENT_UI_ELEMENT_PEER_LIST_H #define RTORRENT_UI_ELEMENT_PEER_LIST_H +#include + #include "core/download.h" #include "element_base.h" @@ -49,6 +51,8 @@ class ElementPeerList : public ElementBase { public: typedef std::list PList; + typedef torrent::ConnectionList::signal_peer_type::iterator signal_connection; + typedef enum { DISPLAY_LIST, DISPLAY_INFO, @@ -89,8 +93,8 @@ private: PList m_list; PList::iterator m_listItr; - sigc::connection m_connPeerConnected; - sigc::connection m_connPeerDisconnected; + signal_connection m_peer_connected; + signal_connection m_peer_disconnected; }; }