Move functions in pbd/clear_dir.h/cc into pbd/file_utils.h/cc
[ardour.git] / libs / ardour / midi_ui.cc
index b80370ec6aca2ca8545c4ae3e73d8536c446286d..e00ec587ec4da2f6180b397ee7c3ecb09ce0b92e 100644 (file)
@@ -52,7 +52,11 @@ MidiControlUI::MidiControlUI (Session& s)
 
 MidiControlUI::~MidiControlUI ()
 {
+       /* stop the thread */
+       quit ();
+       /* drop all ports as GIO::Sources */
        clear_ports ();
+       /* we no longer exist */
        _instance = 0;
 }
 
@@ -77,7 +81,9 @@ MidiControlUI::midi_input_handler (IOCondition ioc, AsyncMIDIPort* port)
 
        if (ioc & IO_IN) {
 
+#ifndef PLATFORM_WINDOWS
                CrossThreadChannel::drain (port->selectable());
+#endif
 
                DEBUG_TRACE (DEBUG::MidiIO, string_compose ("data available on %1\n", ((ARDOUR::Port*)port)->name()));
                framepos_t now = _session.engine().sample_time();
@@ -116,6 +122,10 @@ MidiControlUI::reset_ports ()
        if ((p = dynamic_cast<AsyncMIDIPort*> (_session.mmc_input_port()))) {
                ports.push_back (p);
        }
+
+       if ((p = dynamic_cast<AsyncMIDIPort*> (_session.scene_input_port()))) {
+               ports.push_back (p);
+       }
        
        if (ports.empty()) {
                return;