diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-12-20 16:50:41 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-12-20 16:50:41 +0000 |
commit | 738387f9a417537e768d56d3fc4afcb9dc82d66b (patch) | |
tree | 47227ac3b82b8813b489904f785a3e52694a5707 /libs/surfaces | |
parent | 96cd6c993b0ed9a775f7ea096e2afe01be9d00b9 (diff) |
remove a couple of boost::signals2 trouble spots; fix some --strict compile time warnings
git-svn-id: svn://localhost/ardour2/branches/3.0@6378 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces')
3 files changed, 21 insertions, 16 deletions
diff --git a/libs/surfaces/control_protocol/control_protocol/control_protocol.h b/libs/surfaces/control_protocol/control_protocol/control_protocol.h index 8a50caf05f..c80ba9b4b6 100644 --- a/libs/surfaces/control_protocol/control_protocol/control_protocol.h +++ b/libs/surfaces/control_protocol/control_protocol/control_protocol.h @@ -109,7 +109,7 @@ class ControlProtocol : virtual public sigc::trackable, public PBD::Stateful, pu void prev_track (uint32_t initial_id); private: - ControlProtocol (const ControlProtocol&) {} /* noncopyable */ + ControlProtocol (const ControlProtocol&); /* noncopyable */ }; extern "C" { diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc index efe2089237..e9f12638b6 100644 --- a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc +++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc @@ -149,9 +149,10 @@ GenericMidiControlProtocol::start_learning (Controllable* c) for (MIDIPendingControllables::iterator i = pending_controllables.begin(); i != pending_controllables.end(); ) { ptmp = i; ++ptmp; - if (((*i).first)->get_controllable() == c) { - (*i).second.disconnect(); - delete (*i).first; + if (((*i)->first)->get_controllable() == c) { + (*i)->second.disconnect(); + delete (*i)->first; + delete *i; pending_controllables.erase (i); } i = ptmp; @@ -174,13 +175,11 @@ GenericMidiControlProtocol::start_learning (Controllable* c) { Glib::Mutex::Lock lm (pending_lock); -#if 0 // BOOST SIGNALS - std::pair<MIDIControllable *, boost::signals2::scoped_connection> element; - element.first = mc; - element.second = c->LearningFinished.connect (bind (mem_fun (*this, &GenericMidiControlProtocol::learning_stopped), mc)); + MIDIPendingControllable* element = new MIDIPendingControllable; + element->first = mc; + c->LearningFinished.connect (element->second, boost::bind (&GenericMidiControlProtocol::learning_stopped, this, mc)); pending_controllables.push_back (element); -#endif } mc->learn_about_external_control (); @@ -199,8 +198,9 @@ GenericMidiControlProtocol::learning_stopped (MIDIControllable* mc) tmp = i; ++tmp; - if ( (*i).first == mc) { - (*i).second.disconnect(); + if ( (*i)->first == mc) { + (*i)->second.disconnect(); + delete *i; pending_controllables.erase(i); } @@ -222,11 +222,12 @@ GenericMidiControlProtocol::stop_learning (Controllable* c) */ for (MIDIPendingControllables::iterator i = pending_controllables.begin(); i != pending_controllables.end(); ++i) { - if (((*i).first)->get_controllable() == c) { - (*i).first->stop_learning (); - dptr = (*i).first; - (*i).second.disconnect(); + if (((*i)->first)->get_controllable() == c) { + (*i)->first->stop_learning (); + dptr = (*i)->first; + (*i)->second.disconnect(); + delete *i; pending_controllables.erase (i); break; } @@ -350,6 +351,9 @@ GenericMidiControlProtocol::set_state (const XMLNode& node, int version) { Glib::Mutex::Lock lm (pending_lock); + for (MIDIPendingControllables::iterator i = pending_controllables.begin(); i != pending_controllables.end(); ++i) { + delete *i; + } pending_controllables.clear (); } diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.h b/libs/surfaces/generic_midi/generic_midi_control_protocol.h index 828bb4e6be..c42d796e81 100644 --- a/libs/surfaces/generic_midi/generic_midi_control_protocol.h +++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.h @@ -51,7 +51,8 @@ class GenericMidiControlProtocol : public ARDOUR::ControlProtocol { typedef std::set<MIDIControllable*> MIDIControllables; MIDIControllables controllables; - typedef std::list<std::pair<MIDIControllable*,sigc::connection> > MIDIPendingControllables; + typedef std::pair<MIDIControllable*,PBD::Connection> MIDIPendingControllable; + typedef std::list<MIDIPendingControllable* > MIDIPendingControllables; MIDIPendingControllables pending_controllables; Glib::Mutex controllables_lock; Glib::Mutex pending_lock; |