change API for GainControl, VCA and VCAManager
[ardour.git] / libs / ardour / midi_ui.cc
index 8d924350bf680b55050c7b43d8a50af6a91edaee..c11f96c071a0a693f7b852f1d1ad64296c7a03a2 100644 (file)
@@ -82,12 +82,16 @@ MidiControlUI::do_request (MidiUIRequest* req)
 }
 
 bool
-MidiControlUI::midi_input_handler (IOCondition ioc, boost::shared_ptr<AsyncMIDIPort> port)
+MidiControlUI::midi_input_handler (IOCondition ioc, boost::weak_ptr<AsyncMIDIPort> wport)
 {
+       boost::shared_ptr<AsyncMIDIPort> port = wport.lock ();
+       if (!port) {
+               return false;
+       }
+
        DEBUG_TRACE (DEBUG::MidiIO, string_compose ("something happend on  %1\n", boost::shared_ptr<ARDOUR::Port> (port)->name()));
-       cerr << "Something happened on " << boost::shared_ptr<ARDOUR::Port> (port)->name() << " ioc = " << hex << ioc << dec << endl;
+
        if (ioc & ~IO_IN) {
-               cerr << "....no input ... do nothing\n";
                return false;
        }
 
@@ -95,7 +99,6 @@ MidiControlUI::midi_input_handler (IOCondition ioc, boost::shared_ptr<AsyncMIDIP
 
                port->clear ();
                DEBUG_TRACE (DEBUG::MidiIO, string_compose ("data available on %1\n", boost::shared_ptr<ARDOUR::Port>(port)->name()));
-               cerr << "....input appears ready\n";
                framepos_t now = _session.engine().sample_time();
                port->parse (now);
        }
@@ -132,7 +135,8 @@ MidiControlUI::reset_ports ()
        }
 
        for (vector<boost::shared_ptr<AsyncMIDIPort> >::const_iterator pi = ports.begin(); pi != ports.end(); ++pi) {
-               (*pi)->xthread().set_receive_handler (sigc::bind (sigc::mem_fun (this, &MidiControlUI::midi_input_handler), *pi));
+               (*pi)->xthread().set_receive_handler (sigc::bind (
+                                       sigc::mem_fun (this, &MidiControlUI::midi_input_handler), boost::weak_ptr<AsyncMIDIPort>(*pi)));
                (*pi)->xthread().attach (_main_loop->get_context());
        }
 }