merge with master
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 15 Jan 2014 19:29:32 +0000 (14:29 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 15 Jan 2014 19:29:32 +0000 (14:29 -0500)
1  2 
gtk2_ardour/audio_time_axis.cc
gtk2_ardour/automation_line.cc
gtk2_ardour/midi_time_axis.cc
gtk2_ardour/midi_time_axis.h
libs/ardour/vst_plugin.cc
libs/panners/1in2out/panner_1in2out.cc
libs/panners/2in2out/panner_2in2out.cc
libs/panners/stereobalance/panner_balance.cc
libs/panners/vbap/vbap.cc

Simple merge
Simple merge
Simple merge
Simple merge
index 168bd0506ec25c83e0dc13e970eeb654eef6ac17,729ee5c129484f344a5c8ce4f23657f9fc1729f3..f87f7b73c19b7aede0c4de37fc740aea3a906ff1
@@@ -528,23 -528,35 +528,36 @@@ VSTPlugin::connect_and_run (BufferSet& 
  {
        Plugin::connect_and_run (bufs, in_map, out_map, nframes, offset);
  
-       // VC++ doesn't support this C99 extension. Use alloca instead of dynamic array (rather than std::vector which allocs on the heap)
+       ChanCount bufs_count;
+       bufs_count.set(DataType::AUDIO, 1);
+       bufs_count.set(DataType::MIDI, 1);
+       BufferSet& silent_bufs  = _session.get_silent_buffers(bufs_count);
+       BufferSet& scratch_bufs = _session.get_scratch_buffers(bufs_count);
 -      float *ins[_plugin->numInputs];
 -      float *outs[_plugin->numOutputs];
 +      float** ins = (float**)alloca(_plugin->numInputs*sizeof(float*));
 +      float** outs = (float**)alloca(_plugin->numInputs*sizeof(float*));
-       int32_t i;
 +
-       const uint32_t nbufs = bufs.count().n_audio();
+       int32_t i;
  
-       int in_index = 0;
+       uint32_t in_index = 0;
        for (i = 0; i < (int32_t) _plugin->numInputs; ++i) {
-               ins[i] = bufs.get_audio(min((uint32_t) in_index, nbufs - 1)).data() + offset;
-               in_index++;
+               uint32_t  index;
+               bool      valid = false;
+               index = in_map.get(DataType::AUDIO, in_index++, &valid);
+               ins[i] = (valid)
+                                       ? bufs.get_audio(index).data(offset)
+                                       : silent_bufs.get_audio(0).data(offset);
        }
  
-       int out_index = 0;
+       uint32_t out_index = 0;
        for (i = 0; i < (int32_t) _plugin->numOutputs; ++i) {
-               outs[i] = bufs.get_audio(min((uint32_t) out_index, nbufs - 1)).data() + offset;
-               out_index++;
+               uint32_t  index;
+               bool      valid = false;
+               index = out_map.get(DataType::AUDIO, out_index++, &valid);
+               outs[i] = (valid)
+                                       ? bufs.get_audio(index).data(offset)
+                                       : scratch_bufs.get_audio(0).data(offset);
        }
  
        if (bufs.count().n_midi() > 0) {
Simple merge