enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h
[ardour.git] / libs / ardour / midi_ui.cc
index 1d2fe7c7e1b4a2b2b6fcdb02357c7f54a9231f2e..eaacde2969f3cb5cc077f8d5ee383610154f8570 100644 (file)
@@ -37,7 +37,7 @@ using namespace ARDOUR;
 using namespace PBD;
 using namespace Glib;
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 MidiControlUI* MidiControlUI::_instance = 0;
 
@@ -82,8 +82,13 @@ 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()));
 
        if (ioc & ~IO_IN) {
@@ -130,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());
        }
 }