Fix non-summon of butler when a track that needs it is followed by a track that does not (in the single-process-thread-CPU case). Should fix #4677.
git-svn-id: svn://localhost/ardour2/branches/3.0@11391 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
@@ -308,6 +308,9 @@ AudioTrack::set_state_part_two ()
|
||||
}
|
||||
}
|
||||
|
||||
/** @param need_butler to be set to true if this track now needs the butler, otherwise it can be left alone
|
||||
* or set to false.
|
||||
*/
|
||||
int
|
||||
AudioTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame, int declick, bool& need_butler)
|
||||
{
|
||||
|
||||
@@ -269,6 +269,9 @@ MidiTrack::set_state_part_two ()
|
||||
return;
|
||||
}
|
||||
|
||||
/** @param need_butler to be set to true if this track now needs the butler, otherwise it can be left alone
|
||||
* or set to false.
|
||||
*/
|
||||
int
|
||||
MidiTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame, int declick, bool& need_butler)
|
||||
{
|
||||
|
||||
@@ -146,6 +146,9 @@ Session::no_roll (pframes_t nframes)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/** @param need_butler to be set to true by this method if it needs the butler,
|
||||
* otherwise it can be left alone or set to false.
|
||||
*/
|
||||
int
|
||||
Session::process_routes (pframes_t nframes, bool& need_butler)
|
||||
{
|
||||
@@ -175,16 +178,25 @@ Session::process_routes (pframes_t nframes, bool& need_butler)
|
||||
|
||||
(*i)->set_pending_declick (declick);
|
||||
|
||||
if ((ret = (*i)->roll (nframes, start_frame, end_frame, declick, need_butler)) < 0) {
|
||||
bool b = false;
|
||||
|
||||
if ((ret = (*i)->roll (nframes, start_frame, end_frame, declick, b)) < 0) {
|
||||
stop_transport ();
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (b) {
|
||||
need_butler = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** @param need_butler to be set to true by this method if it needs the butler,
|
||||
* otherwise it must be left alone.
|
||||
*/
|
||||
int
|
||||
Session::silent_process_routes (pframes_t nframes, bool& need_butler)
|
||||
{
|
||||
@@ -204,10 +216,16 @@ Session::silent_process_routes (pframes_t nframes, bool& need_butler)
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((ret = (*i)->silent_roll (nframes, start_frame, end_frame, need_butler)) < 0) {
|
||||
bool b = false;
|
||||
|
||||
if ((ret = (*i)->silent_roll (nframes, start_frame, end_frame, b)) < 0) {
|
||||
stop_transport ();
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (b) {
|
||||
need_butler = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user