possibly fix deadlocking issues with tempo map by rearranging code and adding RT...
[ardour.git] / libs / ardour / location.cc
index 7095596101be1e6fbc9cbceb48f1f99d7f2406b0..e909957e0d9daaf27e1b67cd34504e6fec4f111c 100644 (file)
@@ -54,6 +54,7 @@ Location::Location (Session& s)
        assert (_end >= 0);
 }
 
+/** Construct a new Location, giving it the position lock style determined by glue-new-markers-to-bars-and-beats */
 Location::Location (Session& s, framepos_t sample_start, framepos_t sample_end, const std::string &name, Flags bits)
        : SessionHandleRef (s)
        , _name (name)
@@ -61,7 +62,7 @@ Location::Location (Session& s, framepos_t sample_start, framepos_t sample_end,
        , _end (sample_end)
        , _flags (bits)
        , _locked (false)
-       , _position_lock_style (AudioTime)
+       , _position_lock_style (s.config.get_glue_new_markers_to_bars_and_beats() ? MusicTime : AudioTime)
 {
        recompute_bbt_from_frames ();
 
@@ -418,10 +419,8 @@ Location::set_state (const XMLNode& node, int /*version*/)
                return -1;
        }
 
-       if ((prop = node.property ("id")) == 0) {
+       if (!set_id (node)) {
                warning << _("XML node for Location has no ID information") << endmsg;
-       } else {
-               _id = prop->value ();
        }
 
        if ((prop = node.property ("name")) == 0) {
@@ -521,8 +520,8 @@ Location::recompute_bbt_from_frames ()
                return;
        }
 
-       _session.tempo_map().bbt_time (_start, _bbt_start);
-       _session.tempo_map().bbt_time (_end, _bbt_end);
+       _session.bbt_time (_start, _bbt_start);
+       _session.bbt_time (_end, _bbt_end);
 }
 
 void