summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-09-22 01:52:37 +0200
committerRobin Gareus <robin@gareus.org>2017-09-22 01:52:37 +0200
commit7a51d8f768c3ec529e7585b65e5e658eba1cf33d (patch)
tree6ce3e2bc6c72a0ba25db191e38e2d2f2d26123e3
parent506a29e2d3a8a669678e18d7eff5f3d708627c37 (diff)
AlignmentChoise is a Track Property
The DiskWriter uses AlignStyle which is set dynamically by the Track and may depend on I/O connections.
-rw-r--r--libs/ardour/ardour/disk_writer.h5
-rw-r--r--libs/ardour/disk_writer.cc34
-rw-r--r--libs/ardour/track.cc22
3 files changed, 13 insertions, 48 deletions
diff --git a/libs/ardour/ardour/disk_writer.h b/libs/ardour/ardour/disk_writer.h
index d5446d0ab6..2953699f83 100644
--- a/libs/ardour/ardour/disk_writer.h
+++ b/libs/ardour/ardour/disk_writer.h
@@ -82,10 +82,8 @@ class LIBARDOUR_API DiskWriter : public DiskIOProcessor
int use_new_write_source (DataType, uint32_t n = 0);
void reset_write_sources (bool, bool force = false);
- AlignStyle alignment_style() const { return _alignment_style; }
- AlignChoice alignment_choice() const { return _alignment_choice; }
+ AlignStyle alignment_style() const { return _alignment_style; }
void set_align_style (AlignStyle, bool force=false);
- void set_align_choice (AlignChoice a, bool force=false);
PBD::Signal0<void> AlignmentStyleChanged;
@@ -180,7 +178,6 @@ class LIBARDOUR_API DiskWriter : public DiskIOProcessor
samplepos_t last_recordable_sample;
int last_possibly_recording;
AlignStyle _alignment_style;
- AlignChoice _alignment_choice;
std::string _write_source_name;
boost::shared_ptr<SMFSource> _midi_write_source;
diff --git a/libs/ardour/disk_writer.cc b/libs/ardour/disk_writer.cc
index 4306363e58..b741a864dc 100644
--- a/libs/ardour/disk_writer.cc
+++ b/libs/ardour/disk_writer.cc
@@ -56,7 +56,6 @@ DiskWriter::DiskWriter (Session& s, string const & str, DiskIOProcessor::Flag f)
, last_recordable_sample (max_samplepos)
, last_possibly_recording (0)
, _alignment_style (ExistingMaterial)
- , _alignment_choice (Automatic)
, _num_captured_loops (0)
, _accumulated_capture_offset (0)
, _gui_feed_buffer(AudioEngine::instance()->raw_buffer_size (DataType::MIDI))
@@ -333,36 +332,11 @@ DiskWriter::set_align_style (AlignStyle a, bool force)
}
}
-void
-DiskWriter::set_align_choice (AlignChoice a, bool force)
-{
- if (record_enabled() && _session.actively_recording()) {
- return;
- }
-
- if ((a != _alignment_choice) || force) {
- _alignment_choice = a;
-
- switch (_alignment_choice) {
- case UseExistingMaterial:
- set_align_style (ExistingMaterial);
- break;
- case UseCaptureTime:
- set_align_style (CaptureTime);
- break;
- default:
- error << string_compose (_("programming error: %1"), "DiskWriter: asked to use illegal alignment style") << endmsg;
- break;
- }
- }
-}
-
XMLNode&
DiskWriter::state (bool full)
{
XMLNode& node (DiskIOProcessor::state (full));
node.set_property (X_("type"), X_("diskwriter"));
- node.set_property (X_("capture-alignment"), enum_2_string (_alignment_choice));
node.set_property (X_("record-safe"), (_record_safe ? X_("yes" : "no")));
return node;
}
@@ -374,14 +348,6 @@ DiskWriter::set_state (const XMLNode& node, int version)
return -1;
}
- AlignChoice ac;
-
- if (node.get_property (X_("capture-alignment"), ac)) {
- set_align_choice (ac, true);
- } else {
- set_align_choice (Automatic, true);
- }
-
if (!node.get_property (X_("record-safe"), _record_safe)) {
_record_safe = false;
}
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc
index f451a3ed51..2ad41dc34d 100644
--- a/libs/ardour/track.cc
+++ b/libs/ardour/track.cc
@@ -97,6 +97,7 @@ Track::init ()
_disk_reader->set_block_size (_session.get_block_size ());
_disk_reader->set_route (boost::dynamic_pointer_cast<Route> (shared_from_this()));
+ set_align_choice_from_io ();
_disk_writer.reset (new DiskWriter (_session, name(), dflags));
_disk_writer->set_block_size (_session.get_block_size ());
_disk_writer->set_route (boost::dynamic_pointer_cast<Route> (shared_from_this()));
@@ -772,7 +773,7 @@ Track::alignment_style () const
AlignChoice
Track::alignment_choice () const
{
- return _disk_writer->alignment_choice ();
+ return _alignment_choice;
}
samplepos_t
@@ -876,17 +877,18 @@ Track::use_new_playlist (DataType dt)
void
Track::set_align_choice (AlignChoice ac, bool force)
{
+ _alignment_choice = ac;
switch (ac) {
- case Automatic:
- _alignment_choice = Automatic;
- set_align_choice_from_io ();
- return;
- default:
- break;
+ case Automatic:
+ set_align_choice_from_io ();
+ break;
+ case UseCaptureTime:
+ _disk_writer->set_align_style (CaptureTime, force);
+ break;
+ case UseExistingMaterial:
+ _disk_writer->set_align_style (ExistingMaterial, force);
+ break;
}
-
- _disk_writer->set_align_choice (ac, force);
- _alignment_choice = ac;
}
void