From 2171bba037810d3e4294b64a664b6b8e083890b6 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 24 Apr 2012 19:25:57 +0000 Subject: [PATCH] make generic MIDI support handle SendFeedback() in process()-context, not in the MIDIControlUI event loop git-svn-id: svn://localhost/ardour2/branches/3.0@12083 d708f5d6-7413-0410-9779-e7cbd77b26cf --- .../generic_midi/generic_midi_control_protocol.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc index bf3221b0b2..ae962feddc 100644 --- a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc +++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc @@ -75,7 +75,15 @@ GenericMidiControlProtocol::GenericMidiControlProtocol (Session& s) Controllable::CreateBinding.connect_same_thread (*this, boost::bind (&GenericMidiControlProtocol::create_binding, this, _1, _2, _3)); Controllable::DeleteBinding.connect_same_thread (*this, boost::bind (&GenericMidiControlProtocol::delete_binding, this, _1)); - Session::SendFeedback.connect (*this, MISSING_INVALIDATOR, ui_bind (&GenericMidiControlProtocol::send_feedback, this), midi_ui_context());; + /* this signal is emitted by the process() callback, and if + * send_feedback() is going to do anything, it should do it in the + * context of the process() callback itself. + */ + + Session::SendFeedback.connect_same_thread (*this, boost::bind (&GenericMidiControlProtocol::send_feedback, this)); + + /* this one is cross-thread */ + Route::RemoteControlIDChange.connect (*this, MISSING_INVALIDATOR, ui_bind (&GenericMidiControlProtocol::reset_controllables, this), midi_ui_context()); reload_maps ();