X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fmidi_ui.cc;h=eb7d1cf7634a1e036a2952a80c76bdd2e85d195e;hb=62f29d6c440dee32e45f8ed2b75d87de30234342;hp=6b629aabd5b221ec3e71a4ffdf42f36b9d8eb867;hpb=650ee5a3178960c394c29750f69122398b59fd38;p=ardour.git diff --git a/libs/ardour/midi_ui.cc b/libs/ardour/midi_ui.cc index 6b629aabd5..eb7d1cf763 100644 --- a/libs/ardour/midi_ui.cc +++ b/libs/ardour/midi_ui.cc @@ -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,12 +82,16 @@ MidiControlUI::do_request (MidiUIRequest* req) } bool -MidiControlUI::midi_input_handler (IOCondition ioc, boost::shared_ptr port) +MidiControlUI::midi_input_handler (IOCondition ioc, boost::weak_ptr wport) { + boost::shared_ptr port = wport.lock (); + if (!port) { + return false; + } + DEBUG_TRACE (DEBUG::MidiIO, string_compose ("something happend on %1\n", boost::shared_ptr (port)->name())); - cout << "Something happened on " << boost::shared_ptr (port)->name() << " ioc = " << hex << ioc << dec << endl; + if (ioc & ~IO_IN) { - cout << "....no input ... do nothing" << endl; return false; } @@ -95,8 +99,7 @@ MidiControlUI::midi_input_handler (IOCondition ioc, boost::shared_ptrclear (); DEBUG_TRACE (DEBUG::MidiIO, string_compose ("data available on %1\n", boost::shared_ptr(port)->name())); - cout << "....input appears ready\n"; - framepos_t now = _session.engine().sample_time(); + samplepos_t now = _session.engine().sample_time(); port->parse (now); } @@ -132,7 +135,8 @@ MidiControlUI::reset_ports () } for (vector >::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(*pi))); (*pi)->xthread().attach (_main_loop->get_context()); } } @@ -140,19 +144,12 @@ MidiControlUI::reset_ports () void MidiControlUI::thread_init () { - struct sched_param rtparam; - pthread_set_name (X_("midiUI")); PBD::notify_event_loops_about_thread_creation (pthread_self(), X_("midiUI"), 2048); SessionEvent::create_per_thread_pool (X_("midiUI"), 128); - memset (&rtparam, 0, sizeof (rtparam)); - rtparam.sched_priority = 9; /* XXX should be relative to audio (JACK) thread */ - - if (pthread_setschedparam (pthread_self(), SCHED_FIFO, &rtparam) != 0) { - // do we care? not particularly. - } + set_thread_priority (); reset_ports (); }