+ if (_own_output && _output) {
+ _output->silence (nframes);
+ }
+}
+
+void
+IOProcessor::increment_port_buffer_offset (pframes_t offset)
+{
+ if (_own_output && _output) {
+ _output->increment_port_buffer_offset (offset);
+ }
+}
+
+ChanCount
+IOProcessor::natural_output_streams() const
+{
+ return _output ? _output->n_ports() : ChanCount::ZERO;
+}
+
+ChanCount
+IOProcessor::natural_input_streams () const
+{
+ return _input ? _input->n_ports() : ChanCount::ZERO;
+}
+
+bool
+IOProcessor::set_name (const std::string& name)
+{
+ bool ret = SessionObject::set_name (name);
+
+ if (ret && _own_input && _input) {
+ ret = _input->set_name (name);
+ }
+
+ if (ret && _own_output && _output) {
+ ret = _output->set_name (name);
+ }
+
+ return ret;
+}
+
+bool
+IOProcessor::feeds (boost::shared_ptr<Route> other) const
+{
+ return _output && _output->connected_to (other->input());
+}
+
+void
+IOProcessor::disconnect ()
+{
+ if (_input) {
+ _input->disconnect (this);
+ }
+
+ if (_output) {
+ _output->disconnect (this);
+ }