#include <ardour/panner.h>
#include <ardour/dB.h>
#include <ardour/mix.h>
+#include <ardour/profile.h>
#include "i18n.h"
}
}
+string
+Route::ensure_track_or_route_name(string name, Session &session)
+{
+ string newname = name;
+
+ while (session.route_by_name (newname)!=NULL)
+ {
+ newname = bump_name_once (newname);
+ }
+
+ return newname;
+}
+
+
void
Route::inc_gain (gain_t fraction, void *src)
{
reset_panner ();
}
-
redirects_changed (src); /* EMIT SIGNAL */
+
return 0;
}
bool have_insert = false;
if (prop->value() == "ladspa" || prop->value() == "Ladspa" ||
+ prop->value() == "lv2" ||
prop->value() == "vst" ||
prop->value() == "audiounit") {
Glib::RWLock::ReaderLock lm (redirect_lock);
if (!did_locate) {
- automation_snapshot (now);
+ automation_snapshot (now, true);
}
for (RedirectList::iterator i = _redirects.begin(); i != _redirects.end(); ++i) {
if (lm.locked()) {
// automation snapshot can also be called from the non-rt context
// and it uses the redirect list, so we take the lock out here
- automation_snapshot (_session.transport_frame());
+ automation_snapshot (_session.transport_frame(), false);
}
}
}
void
-Route::automation_snapshot (nframes_t now)
+Route::automation_snapshot (nframes_t now, bool force)
{
- IO::automation_snapshot (now);
+ if (!force && !should_snapshot(now)) {
+ return;
+ }
+
+ IO::automation_snapshot (now, force);
for (RedirectList::iterator i = _redirects.begin(); i != _redirects.end(); ++i) {
- (*i)->automation_snapshot (now);
+ (*i)->automation_snapshot (now, force);
}
}