summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-11-18 17:58:38 +0000
committerCarl Hetherington <carl@carlh.net>2009-11-18 17:58:38 +0000
commit477bc772beaf1214e309edd4fb748621c07e2e7b (patch)
tree330911dc9f280f62ba65a57ab554ef7db05b6c3d
parent753c66a78666e031dc859c6c2168e14e369263a4 (diff)
Make BufferSet::is_silent work so that session silent_buffers are correctly silenced, preventing feedback from occurring with plugins that output non-zero values for zero inputs.
git-svn-id: svn://localhost/ardour2/branches/3.0@6124 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--libs/ardour/ardour/buffer.h1
-rw-r--r--libs/ardour/ardour/buffer_set.h3
-rw-r--r--libs/ardour/buffer_set.cc11
3 files changed, 13 insertions, 2 deletions
diff --git a/libs/ardour/ardour/buffer.h b/libs/ardour/ardour/buffer.h
index 46a6d62667..48fd7f099b 100644
--- a/libs/ardour/ardour/buffer.h
+++ b/libs/ardour/ardour/buffer.h
@@ -61,6 +61,7 @@ public:
DataType type() const { return _type; }
bool silent() const { return _silent; }
+ void is_silent(bool yn) { _silent = yn; }
/** Reallocate the buffer used internally to handle at least @a size_t units of data.
*
diff --git a/libs/ardour/ardour/buffer_set.h b/libs/ardour/ardour/buffer_set.h
index f9547e69a2..0c4d5671d3 100644
--- a/libs/ardour/ardour/buffer_set.h
+++ b/libs/ardour/ardour/buffer_set.h
@@ -76,8 +76,7 @@ public:
const ChanCount& count() const { return _count; }
ChanCount& count() { return _count; }
- void is_silent(bool yn) { _is_silent = yn; }
- bool is_silent() const { return _is_silent; }
+ void is_silent(bool yn);
void silence (nframes_t nframes, nframes_t offset);
bool is_mirror() const { return _is_mirror; }
diff --git a/libs/ardour/buffer_set.cc b/libs/ardour/buffer_set.cc
index c77db6a683..70f75985f7 100644
--- a/libs/ardour/buffer_set.cc
+++ b/libs/ardour/buffer_set.cc
@@ -335,5 +335,16 @@ BufferSet::silence (nframes_t nframes, nframes_t offset)
}
}
+void
+BufferSet::is_silent (bool yn)
+{
+ for (std::vector<BufferVec>::iterator i = _buffers.begin(); i != _buffers.end(); ++i) {
+ for (BufferVec::iterator b = i->begin(); b != i->end(); ++b) {
+ (*b)->is_silent (yn);
+ }
+ }
+
+}
+
} // namespace ARDOUR