add a lua timer callback signal
[ardour.git] / libs / ardour / process_thread.cc
index 5d8d6f34fdfd51393451f544fed1c72b9aecff77..efcc47fee38cc39abc7153bf4907af3e8d3ec0cb 100644 (file)
@@ -90,7 +90,7 @@ ProcessThread::get_silent_buffers (ChanCount count)
 }
 
 BufferSet&
-ProcessThread::get_scratch_buffers (ChanCount count)
+ProcessThread::get_scratch_buffers (ChanCount count, bool silence)
 {
         ThreadBuffers* tb = _private_thread_buffers.get();
         assert (tb);
@@ -105,6 +105,33 @@ ProcessThread::get_scratch_buffers (ChanCount count)
                sb->set_count (sb->available());
        }
 
+       if (silence) {
+               for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
+                       for (uint32_t i = 0; i < sb->count().get(*t); ++i) {
+                               sb->get(*t, i).clear();
+                       }
+               }
+       }
+
+       return *sb;
+}
+
+BufferSet&
+ProcessThread::get_noinplace_buffers (ChanCount count)
+{
+       ThreadBuffers* tb = _private_thread_buffers.get();
+       assert (tb);
+
+       BufferSet* sb = tb->noinplace_buffers;
+       assert (sb);
+
+       if (count != ChanCount::ZERO) {
+               assert(sb->available() >= count);
+               sb->set_count (count);
+       } else {
+               sb->set_count (sb->available());
+       }
+
        return *sb;
 }
 
@@ -160,6 +187,17 @@ ProcessThread::gain_automation_buffer()
         return g;
 }
 
+gain_t*
+ProcessThread::trim_automation_buffer()
+{
+        ThreadBuffers* tb = _private_thread_buffers.get();
+        assert (tb);
+
+        gain_t *g =  tb->trim_automation_buffer;
+        assert (g);
+        return g;
+}
+
 gain_t*
 ProcessThread::send_gain_automation_buffer()
 {