Set \imprecise when a configuration is chosen
authorJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>
Tue, 2 Aug 2016 11:41:29 +0000 (13:41 +0200)
committerJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>
Sat, 6 Aug 2016 17:38:09 +0000 (19:38 +0200)
Instead of setting \imprecise at the end of the loop if a configuration
was found (which clobbered valuable information, see dae2406187), set it
each time a new configuration is chosen.

In the second loop that tries harder, resetting \imprecise also avoids a
previous "imprecise->set(AUDIO, 0)" to last even if another
configuration is chosen later.

Last but not least, it will enable correctly setting the midi input
count hoped for by the configuration.

libs/ardour/luaproc.cc

index cfe66820672791e1dd6aed60f1ab61bd7d2e1596..ae0b09717f866760efb85ba5cf44c5ce5dfcbb94 100644 (file)
@@ -391,6 +391,9 @@ LuaProc::can_support_io_configuration (const ChanCount& in, ChanCount& out, Chan
   if ((nch) > preferred_out) { p *= 1.1; }         \
   if (p < penalty) {                               \
     audio_out = (nch);                             \
+    if (imprecise) {                               \
+      *imprecise = in;                             \
+    }                                              \
     penalty = p;                                   \
     found = true;                                  \
   }                                                \
@@ -505,10 +508,6 @@ LuaProc::can_support_io_configuration (const ChanCount& in, ChanCount& out, Chan
 
        }
 
-       if (found && imprecise) {
-               *imprecise = in;
-       }
-
        if (!found && imprecise) {
                /* try harder */
                for (luabridge::Iterator i (iotable); !i.isNil (); ++i) {
@@ -531,7 +530,6 @@ LuaProc::can_support_io_configuration (const ChanCount& in, ChanCount& out, Chan
 
                        assert (possible_in > 0); // all other cases will have been matched above
 
-                       imprecise->set (DataType::AUDIO, possible_in);
                        if (possible_out == -1 || possible_out == -2) {
                                FOUNDCFG (2);
                        } else if (possible_out < -2) {
@@ -541,6 +539,7 @@ LuaProc::can_support_io_configuration (const ChanCount& in, ChanCount& out, Chan
                                /* exact number of outputs */
                                FOUNDCFG (possible_out);
                        }
+                       imprecise->set (DataType::AUDIO, possible_in);
                        // ideally we'll also find the closest, best matching
                        // input configuration with minimal output penalty...
                }