summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorJesse Chappell <jesse@essej.net>2006-01-19 18:00:07 +0000
committerJesse Chappell <jesse@essej.net>2006-01-19 18:00:07 +0000
commit5eb4a701f3c233b0f49b581b3350eb6fdf3c1012 (patch)
treef452a63e1e9366af9414eafb29af7d6e393fa5a4 /libs/ardour
parent6ef5c8da56800bbce1c23a9ea51c9a1646d5887f (diff)
fixed various xfade and undo and updating issues. plugins no longer run on deactivated routes/tracks. other region copy/trim undo fixes
git-svn-id: svn://localhost/trunk/ardour2@279 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/crossfade.h2
-rw-r--r--libs/ardour/audio_playlist.cc5
-rw-r--r--libs/ardour/crossfade.cc14
-rw-r--r--libs/ardour/route.cc6
4 files changed, 19 insertions, 8 deletions
diff --git a/libs/ardour/ardour/crossfade.h b/libs/ardour/ardour/crossfade.h
index 419b980a83..4db833ca45 100644
--- a/libs/ardour/ardour/crossfade.h
+++ b/libs/ardour/ardour/crossfade.h
@@ -165,7 +165,7 @@ class Crossfade : public Stateful, public StateManager
static Sample* crossfade_buffer_out;
static Sample* crossfade_buffer_in;
- void initialize ();
+ void initialize (bool savestate=true);
int compute (ARDOUR::AudioRegion&, ARDOUR::AudioRegion&, CrossfadeModel);
bool update (bool force);
diff --git a/libs/ardour/audio_playlist.cc b/libs/ardour/audio_playlist.cc
index 9c68c61114..be977447b7 100644
--- a/libs/ardour/audio_playlist.cc
+++ b/libs/ardour/audio_playlist.cc
@@ -787,7 +787,7 @@ AudioPlaylist::destroy_region (Region* region)
void
AudioPlaylist::crossfade_changed (Change ignored)
{
- if (in_flush) {
+ if (in_flush || in_set_state) {
return;
}
@@ -798,6 +798,7 @@ AudioPlaylist::crossfade_changed (Change ignored)
*/
maybe_save_state (_("xfade change"));
+
notify_modified ();
}
@@ -847,7 +848,7 @@ AudioPlaylist::region_changed (Change what_changed, Region* region)
maybe_save_state (_("region modified"));
- if (parent_wants_notify || (what_changed & our_interests)) {
+ if ((parent_wants_notify || (what_changed & our_interests))) {
notify_modified ();
}
diff --git a/libs/ardour/crossfade.cc b/libs/ardour/crossfade.cc
index 67b6a182b4..8aed204d71 100644
--- a/libs/ardour/crossfade.cc
+++ b/libs/ardour/crossfade.cc
@@ -146,17 +146,19 @@ Crossfade::Crossfade (const Playlist& playlist, XMLNode& node)
<< endmsg;
throw failed_constructor();
}
-
+
if ((_out = dynamic_cast<AudioRegion*> (r)) == 0) {
throw failed_constructor();
}
_length = 0;
- initialize();
+ initialize(false);
if (set_state (node)) {
throw failed_constructor();
}
+
+ save_state ("initial");
}
Crossfade::~Crossfade ()
@@ -167,7 +169,7 @@ Crossfade::~Crossfade ()
}
void
-Crossfade::initialize ()
+Crossfade::initialize (bool savestate)
{
_in_update = false;
@@ -198,8 +200,10 @@ Crossfade::initialize ()
// _out->StateChanged.connect (slot (*this, &Crossfade::member_changed));
overlap_type = _in->coverage (_out->position(), _out->last_frame());
-
- save_state ("initial");
+
+ if (savestate) {
+ save_state ("initial");
+ }
}
int
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 5fcbd53bb6..269ed98a77 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -1756,6 +1756,12 @@ Route::silence (jack_nframes_t nframes, jack_nframes_t offset)
if (lm.locked()) {
for (RedirectList::iterator i = _redirects.begin(); i != _redirects.end(); ++i) {
+ PluginInsert* pi;
+ if (!_active && (pi = dynamic_cast<PluginInsert*> (*i)) != 0) {
+ // skip plugins, they don't need anything when we're not active
+ continue;
+ }
+
(*i)->silence (nframes, offset);
}