diff --git a/libs/ardour/location.cc b/libs/ardour/location.cc index 74eb047668..509e386088 100644 --- a/libs/ardour/location.cc +++ b/libs/ardour/location.cc @@ -796,6 +796,11 @@ Location::set_scene_change (std::shared_ptr sc) void Location::start_domain_bounce (Temporal::DomainBounceInfo& cmd) { + if (cmd.move_markers && cmd.to == AudioTime) { + /* user wants the markers to move during a tempo-map; skip this domain bounce */ + return; + } + if (_start.time_domain() == cmd.to) { /* has the right domain to begin with */ return; @@ -814,6 +819,11 @@ Location::start_domain_bounce (Temporal::DomainBounceInfo& cmd) void Location::finish_domain_bounce (Temporal::DomainBounceInfo& cmd) { + if ( cmd.move_markers && cmd.to == AudioTime ) { + /* user wants the markers to move during a tempo-map; skip this domain bounce */ + return; + } + if (_start.time_domain() == cmd.to) { /* had the right domain to begin with */ return; diff --git a/libs/temporal/temporal/domain_swap.h b/libs/temporal/temporal/domain_swap.h index 1630a19174..b9a0572156 100644 --- a/libs/temporal/temporal/domain_swap.h +++ b/libs/temporal/temporal/domain_swap.h @@ -53,13 +53,19 @@ struct LIBTEMPORAL_API TimeDomainSwapper : public virtual PBD::Destructible { struct LIBTEMPORAL_API DomainBounceInfo { - DomainBounceInfo (TimeDomain f, TimeDomain t) : from (f), to (t) {} + DomainBounceInfo (TimeDomain f, TimeDomain t, bool m = false) + : from (f) + , to (t) + , move_markers (m) + {} const TimeDomain from; const TimeDomain to; TimeDomainPosChanges positions; TimeDomainCntChanges counts; + + bool move_markers; }; }