13
0

a) fixed pseudo-grab-retention in plugin UIs

b) inserts are properly silenced when route is muted


git-svn-id: svn://localhost/trunk/ardour2@473 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2006-04-25 20:10:42 +00:00
parent bb7b3ec1a6
commit 81c7452615
3 changed files with 17 additions and 0 deletions

View File

@ -75,6 +75,7 @@ class PortInsert : public Insert
void init (); void init ();
void run (vector<Sample *>& bufs, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t offset); void run (vector<Sample *>& bufs, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t offset);
void silence (jack_nframes_t nframes, jack_nframes_t offset);
jack_nframes_t latency(); jack_nframes_t latency();

View File

@ -876,6 +876,20 @@ PortInsert::~PortInsert ()
GoingAway (this); GoingAway (this);
} }
void
PortInsert::silence (jack_nframes_t nframes, jack_nframes_t offset)
{
/* io_lock, not taken: function must be called from Session::process() calltree */
/* this silences our outputs, but we need to silence our inputs as well */
for (vector<Port *>::iterator i = _outputs.begin(); i != _outputs.end(); ++i) {
(*i)->silence (nframes, offset);
}
// IO::silence (nframes, offset);
}
void void
PortInsert::run (vector<Sample *>& bufs, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t offset) PortInsert::run (vector<Sample *>& bufs, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t offset)
{ {
@ -897,6 +911,7 @@ PortInsert::run (vector<Sample *>& bufs, uint32_t nbufs, jack_nframes_t nframes,
for (o = _outputs.begin(), n = 0; o != _outputs.end(); ++o, ++n) { for (o = _outputs.begin(), n = 0; o != _outputs.end(); ++o, ++n) {
memcpy ((*o)->get_buffer (nframes) + offset, bufs[min(nbufs,n)], sizeof (Sample) * nframes); memcpy ((*o)->get_buffer (nframes) + offset, bufs[min(nbufs,n)], sizeof (Sample) * nframes);
(*o)->mark_silence (false);
} }
/* collect input */ /* collect input */

View File

@ -168,6 +168,7 @@ BarController::button_release (GdkEventButton* ev)
mouse_control (ev->x, ev->window, scale); mouse_control (ev->x, ev->window, scale);
} }
darea.remove_modal_grab(); darea.remove_modal_grab();
grabbed = false;
StopGesture (); StopGesture ();
break; break;