put back revised version of Route::has_external_redirects() and use it to give a warning when attempting to freeze a track with sends/inserts/returns
git-svn-id: svn://localhost/ardour2/branches/3.0@11707 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
8b03f1790a
commit
416e3c701e
@ -3390,6 +3390,25 @@ Editor::freeze_route ()
|
||||
return;
|
||||
}
|
||||
|
||||
if (clicked_routeview->track()->has_external_redirects()) {
|
||||
MessageDialog d (string_compose (_("<b>%1</b>\n\nThis track has at least one send/insert/return as part of its signal flow.\n\n"
|
||||
"Freezing will only process the signal as far as the first send/insert/return."),
|
||||
clicked_routeview->track()->name()), true, MESSAGE_INFO, BUTTONS_NONE, true);
|
||||
|
||||
d.add_button (_("Freeze anyway"), Gtk::RESPONSE_OK);
|
||||
d.add_button (_("Don't freeze"), Gtk::RESPONSE_CANCEL);
|
||||
d.set_title (_("Freeze Limits"));
|
||||
|
||||
int response = d.run ();
|
||||
|
||||
switch (response) {
|
||||
case Gtk::RESPONSE_CANCEL:
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
InterThreadInfo itt;
|
||||
current_interthread_info = &itt;
|
||||
|
||||
|
@ -423,6 +423,8 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
|
||||
void sync_order_keys (std::string const &);
|
||||
static PBD::Signal1<void,std::string const &> SyncOrderKeys;
|
||||
|
||||
bool has_external_redirects() const;
|
||||
|
||||
protected:
|
||||
friend class Session;
|
||||
|
||||
|
@ -4039,3 +4039,21 @@ Route::metering_state () const
|
||||
{
|
||||
return MeteringRoute;
|
||||
}
|
||||
|
||||
bool
|
||||
Route::has_external_redirects () const
|
||||
{
|
||||
for (ProcessorList::const_iterator i = _processors.begin(); i != _processors.end(); ++i) {
|
||||
|
||||
/* ignore inactive processors and obviously ignore the main
|
||||
* outs since everything has them and we don't care.
|
||||
*/
|
||||
|
||||
if ((*i)->active() && (*i) != _main_outs && (*i)->does_routing()) {
|
||||
return true;;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -3969,13 +3969,14 @@ Session::write_one_track (AudioTrack& track, framepos_t start, framepos_t end,
|
||||
srcs.push_back (fsource);
|
||||
}
|
||||
|
||||
/* tell redirects that care that we are about to use a much larger blocksize */
|
||||
/* tell redirects that care that we are about to use a much larger
|
||||
* blocksize. this will flush all plugins too, so that they are ready
|
||||
* to be used for this process.
|
||||
*/
|
||||
|
||||
need_block_size_reset = true;
|
||||
track.set_block_size (chunk_size);
|
||||
|
||||
/* XXX need to flush all redirects */
|
||||
|
||||
position = start;
|
||||
to_do = len;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user