Move a MIDI test in the table handling loop...
authorJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>
Mon, 1 Aug 2016 13:01:44 +0000 (15:01 +0200)
committerJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>
Sat, 6 Aug 2016 17:38:09 +0000 (19:38 +0200)
...to later enable that condition truthiness to depend on the
loop iteration. The goal here is to prepare for the upcoming rewrite,
without introducing any policy change for now.

There is no behavior change because if all loop iterations are skipped,
then \found will be false, and with \imprecise being null the last
attempt will be skipped and we will return false.

libs/ardour/luaproc.cc

index f1f64f038b2c8403fc8f3bc5491f2c4ad6b15578..6af4a1842e809ad128865561bf36ce5ced8f5e1d 100644 (file)
@@ -346,10 +346,6 @@ LuaProc::can_support_io_configuration (const ChanCount& in, ChanCount& out, Chan
        // caller must hold process lock (no concurrent calls to interpreter
        _output_configs.clear ();
 
-       if (in.n_midi() > 0 && !_has_midi_input && !imprecise) {
-               return false;
-       }
-
        lua_State* L = lua.getState ();
        luabridge::LuaRef ioconfig = luabridge::getGlobal (L, "dsp_ioconfig");
        if (!ioconfig.isFunction ()) {
@@ -379,6 +375,7 @@ LuaProc::can_support_io_configuration (const ChanCount& in, ChanCount& out, Chan
        }
 
        const int audio_in = in.n_audio ();
+       const int midi_in = in.n_midi ();
 
        // preferred setting (provided by plugin_insert)
        const int preferred_out = out.n_audio ();
@@ -416,6 +413,11 @@ LuaProc::can_support_io_configuration (const ChanCount& in, ChanCount& out, Chan
 
                int possible_in = io["audio_in"].isNumber() ? io["audio_in"] : -1;
                int possible_out = io["audio_out"].isNumber() ? io["audio_out"] : -1;
+               int possible_midiin = _has_midi_input ? 1 : 0;
+
+               if (midi_in > 0 && possible_midiin == 0 && !imprecise) {
+                       continue;
+               }
 
                // exact match
                if ((possible_in == audio_in) && (possible_out == preferred_out)) {