Chromium Code Reviews| Index: webrtc/base/sigslot.h |
| diff --git a/webrtc/base/sigslot.h b/webrtc/base/sigslot.h |
| index 4534ec9dae4c4f5af97c068d1949ebf682d00c5c..d8e9c2137c5a0dadf11afd6c67cda6794fef796b 100644 |
| --- a/webrtc/base/sigslot.h |
| +++ b/webrtc/base/sigslot.h |
| @@ -407,15 +407,12 @@ namespace sigslot { |
| _signal_base& operator= (_signal_base const& that); |
| public: |
| - _signal_base(const _signal_base& s) : _signal_base_interface(&_signal_base::do_slot_disconnect, &_signal_base::do_slot_duplicate) { |
| + _signal_base(const _signal_base& o) : _signal_base_interface(&_signal_base::do_slot_disconnect, &_signal_base::do_slot_duplicate) { |
| lock_block<mt_policy> lock(this); |
| - connections_list::const_iterator it = m_connected_slots.begin(); |
| - connections_list::const_iterator itEnd = m_connected_slots.end(); |
| - while(it != itEnd) |
| + for (const auto& connection : o.m_connected_slots) |
| { |
| - it->getdest()->signal_connect(this); |
| - m_connected_slots.push_back(*it); |
| - ++it; |
| + connection.getdest()->signal_connect(this); |
| + m_connected_slots.push_back(connection); |
| } |
| } |
| @@ -528,13 +525,20 @@ namespace sigslot { |
| { |
| } |
| + has_slots(has_slots const& o) : has_slots_interface(&has_slots::do_signal_connect, &has_slots::do_signal_disconnect, &has_slots::do_disconnect_all) |
| + { |
|
Taylor Brandstetter
2017/04/27 03:08:44
I know indentation is messed up; I'm going to make
|
| + lock_block<mt_policy> lock(this); |
| + for (auto* signal : o.m_senders) { |
| + signal->slot_duplicate(&o, this); |
| + } |
| + } |
| + |
| ~has_slots() |
| { |
| this->disconnect_all(); |
| } |
| private: |
| - has_slots(has_slots const&); |
| has_slots& operator= (has_slots const&); |
| static void do_signal_connect(has_slots_interface* p, _signal_base_interface* sender) |