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
This commit is contained in:
Carl Hetherington 2009-11-18 17:58:38 +00:00
parent 753c66a786
commit 477bc772be
3 changed files with 13 additions and 2 deletions

View File

@ -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.
*

View File

@ -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; }

View File

@ -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