diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-06-16 08:44:03 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-06-16 08:44:03 -0400 |
commit | 90220998af4f9683d696b511a09b34034e799093 (patch) | |
tree | e974251993f9bf8b33c26bdeb117a8759b476d77 /libs/ardour/diskstream.cc | |
parent | d65f03d07455c4ea38084af71a38c383bd2b3e19 (diff) |
add Record-Safe feature to libardour (from Nikolay Polyanovskii)
Diffstat (limited to 'libs/ardour/diskstream.cc')
-rw-r--r-- | libs/ardour/diskstream.cc | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/libs/ardour/diskstream.cc b/libs/ardour/diskstream.cc index 49d9d62ec4..9f3322dade 100644 --- a/libs/ardour/diskstream.cc +++ b/libs/ardour/diskstream.cc @@ -64,6 +64,7 @@ Diskstream::Diskstream (Session &sess, const string &name, Flag flag) , i_am_the_modifier (0) , _track (0) , _record_enabled (0) + , _record_safe (0) , _visible_speed (1.0f) , _actual_speed (1.0f) , _buffer_reallocation_required (false) @@ -102,6 +103,7 @@ Diskstream::Diskstream (Session& sess, const XMLNode& /*node*/) , i_am_the_modifier (0) , _track (0) , _record_enabled (0) + , _record_safe (0) , _visible_speed (1.0f) , _actual_speed (1.0f) , _buffer_reallocation_required (false) @@ -468,6 +470,7 @@ Diskstream::get_state () snprintf (buf, sizeof(buf), "%f", _visible_speed); node->add_property ("speed", buf); node->add_property ("capture-alignment", enum_2_string (_alignment_choice)); + node->add_property ("record-safe", _record_safe ? "yes" : "no"); if (_extra_xml) { node->add_child_copy (*_extra_xml); @@ -516,8 +519,12 @@ Diskstream::set_state (const XMLNode& node, int /*version*/) non_realtime_set_speed (); } } + + if ((prop = node.property ("record-safe")) != 0) { + _record_safe = PBD::string_is_affirmative (prop->value()) ? 1 : 0; + } - return 0; + return 0; } void @@ -769,6 +776,18 @@ Diskstream::disengage_record_enable () g_atomic_int_set (&_record_enabled, 0); } +void +Diskstream::engage_record_safe () +{ + g_atomic_int_set (&_record_safe, 1); +} + +void +Diskstream::disengage_record_safe () +{ + g_atomic_int_set (&_record_safe, 0); +} + framecnt_t Diskstream::default_disk_read_chunk_frames() { |