mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-06 05:35:47 +01:00
give different Tracks + Ardour/Mixbus playhead priority functionality, and add missing set_track_loop() call for playhead priority
This commit is contained in:
parent
dd313ca988
commit
575b4a7c05
2 changed files with 45 additions and 0 deletions
|
|
@ -162,7 +162,11 @@ CONFIG_VARIABLE (ShuttleBehaviour, shuttle_behaviour, "shuttle-behaviour", Sprun
|
|||
CONFIG_VARIABLE (ShuttleUnits, shuttle_units, "shuttle-units", Percentage)
|
||||
CONFIG_VARIABLE (bool, locate_while_waiting_for_sync, "locate-while-waiting-for-sync", false)
|
||||
CONFIG_VARIABLE (bool, disable_disarm_during_roll, "disable-disarm-during-roll", false)
|
||||
#ifdef USE_TRACKS_CODE_FEATURES
|
||||
CONFIG_VARIABLE (AutoReturnTarget, auto_return_target_list, "auto-return-target-list", AutoReturnTarget(LastLocate) )
|
||||
#else
|
||||
CONFIG_VARIABLE (AutoReturnTarget, auto_return_target_list, "auto-return-target-list", AutoReturnTarget(LastLocate|RangeSelectionStart|Loop|RegionSelectionStart))
|
||||
#endif
|
||||
|
||||
/* metering */
|
||||
|
||||
|
|
|
|||
|
|
@ -505,17 +505,47 @@ Session::select_playhead_priority_target (framepos_t& jump_to)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (Profile->get_trx() && transport_rolling() ) {
|
||||
// We're playing, so do nothing.
|
||||
// Next stop will put us where we need to be.
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Note that the order of checking each AutoReturnTarget flag defines
|
||||
the priority each flag.
|
||||
|
||||
Ardour/Mixbus: Last Locate
|
||||
Range Selection
|
||||
Loop Range
|
||||
Region Selection
|
||||
|
||||
Tracks: Range Selection
|
||||
Loop Range
|
||||
Region Selection
|
||||
Last Locate
|
||||
*/
|
||||
|
||||
#ifndef USE_TRACKS_CODE_FEATURES
|
||||
if (autoreturn & LastLocate) {
|
||||
jump_to = _last_roll_location;
|
||||
}
|
||||
|
||||
if (jump_to < 0 && (autoreturn & RangeSelectionStart)) {
|
||||
#else
|
||||
if (autoreturn & RangeSelectionStart) {
|
||||
#endif
|
||||
if (!_range_selection.empty()) {
|
||||
jump_to = _range_selection.from;
|
||||
} else {
|
||||
if (Profile->get_trx()) {
|
||||
if (transport_rolling ()) {
|
||||
/* Range selection no longer exists, but we're playing,
|
||||
so do nothing. Next stop will put us where
|
||||
we need to be.
|
||||
*/
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -527,6 +557,11 @@ Session::select_playhead_priority_target (framepos_t& jump_to)
|
|||
|
||||
if (location) {
|
||||
jump_to = location->start();
|
||||
|
||||
if (Config->get_seamless_loop()) {
|
||||
/* need to get track buffers reloaded */
|
||||
set_track_loop (true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -537,6 +572,12 @@ Session::select_playhead_priority_target (framepos_t& jump_to)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef USE_TRACKS_CODE_FEATURES
|
||||
if (jump_to < 0 && (autoreturn & LastLocate)) {
|
||||
jump_to = _last_roll_location;
|
||||
}
|
||||
#endif
|
||||
|
||||
return jump_to >= 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue