diff options
Diffstat (limited to 'libs/ardour/audioregion.cc')
-rw-r--r-- | libs/ardour/audioregion.cc | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc index 362ab305db..959177d0cf 100644 --- a/libs/ardour/audioregion.cc +++ b/libs/ardour/audioregion.cc @@ -38,7 +38,7 @@ #include <ardour/dB.h> #include <ardour/playlist.h> #include <ardour/audiofilter.h> -#include <ardour/audiosource.h> +#include <ardour/audiofilesource.h> #include "i18n.h" #include <locale.h> @@ -71,6 +71,11 @@ AudioRegion::AudioRegion (boost::shared_ptr<AudioSource> src, jack_nframes_t sta _fade_out (0.0, 2.0, 1.0, false), _envelope (0.0, 2.0, 1.0, false) { + boost::shared_ptr<AudioFileSource> afs = boost::dynamic_pointer_cast<AudioFileSource> (src); + if (afs) { + afs->HeaderPositionOffsetChanged.connect (mem_fun (*this, &AudioRegion::source_offset_changed)); + } + _scale_amplitude = 1.0; set_default_fades (); @@ -88,6 +93,11 @@ AudioRegion::AudioRegion (boost::shared_ptr<AudioSource> src, jack_nframes_t sta , _fade_out (0.0, 2.0, 1.0, false) , _envelope (0.0, 2.0, 1.0, false) { + boost::shared_ptr<AudioFileSource> afs = boost::dynamic_pointer_cast<AudioFileSource> (src); + if (afs) { + afs->HeaderPositionOffsetChanged.connect (mem_fun (*this, &AudioRegion::source_offset_changed)); + } + _scale_amplitude = 1.0; set_default_fades (); @@ -180,6 +190,11 @@ AudioRegion::AudioRegion (boost::shared_ptr<AudioSource> src, const XMLNode& nod , _fade_out (0.0, 2.0, 1.0, false) , _envelope (0.0, 2.0, 1.0, false) { + boost::shared_ptr<AudioFileSource> afs = boost::dynamic_pointer_cast<AudioFileSource> (src); + if (afs) { + afs->HeaderPositionOffsetChanged.connect (mem_fun (*this, &AudioRegion::source_offset_changed)); + } + set_default_fades (); if (set_state (node)) { @@ -1165,6 +1180,12 @@ AudioRegion::speed_mismatch (float sr) const return fsr != sr; } +void +AudioRegion::source_offset_changed () +{ + set_position (source()->natural_position() + start(), this); +} + boost::shared_ptr<AudioSource> AudioRegion::audio_source (uint32_t n) const { |