Currently using Ardour-5 route templates (state version "3002")
with Ardour6 fails. As opposed to session-templates, Route
templates were not versioned.
This ensures future compatibility (and may allow to interpret
unversioned templates as "3002")
Loop recording creates a single long source, regions have to be
"split" from this source, using "start" as offset.
Since MIDI uses absolute timestamps, offsetting this by accumulating
buffer_position += (*ci)->samples;
like Track::use_captured_audio_sources() does, is not correct.
Furthermore, record_enabled() may be off when stopping recording,
MIDI needs to be flushed regardless.
DiskWriter::transport_looped() is called from the session
when engine loops. This does not take local disk-reader run()
latency offset into account.
finish_capture() needs to be postponed until the disk-writer
itself reaches the loop-position. This is achieved by
postponing loop() and calling it once loop-length of samples
has been captured.
This works because engaging loop always seeks to the loop-position
and first loop resets _capture_captured.
* Use a single method to set mixer-strip widget sensitivity
* Update context-menu to only allow show actions that can
currently be performed, depending on active/inactive state.
* Mark all control elements of in-active strips as insenstive
except those required to re-enable the route.
* Also update processor-box and solo-button when showing Aux
Special case Mixbus. Mixbus already shows a "Insensitive" label,
and Mixbus-channelstrip element sensitivity remains to be
implemented before using this mechanism.
This specific change has broader scope than the bare minimum required - we could just move/replicate transport_ctrl.set_session()
after session_sensitive_actions have had their sensitivity set to true. But this "seems" like a more thorough solution,
in that it sets all relevant actions groups before doing anythng else.
Ardour 5.x slave check was incorrectly ported to A6's TMM:
In Ardour 5 the comparison tested for *not* MTC:
```
if (!dynamic_cast<MTC_Slave*>(_slave)) { ..send MMC.. }
```
Other MMC messages (Record, Locate) are sent unconditionally.
This fixes an issue that after changing backends (::set_backend),
the session-transport was in inconsistent state. If it was rolling,
it continued to roll with "stop" being unavailable.
set_session_extents had a bug; it wasn't calling locations->add()
on the newly created location.
The correct implementation was in set_session_range_location,
but this was only called from one place.
This function was removed, and set_session_extents will be used in its place.
set_session_extents will create a session location if one no longer exists,
so there is no need for set_session_range_location.
* Windows: delete waf installed .dll.a files
* Windows: override waf's conf.env.LIBDIR = conf.env.BINDIR
with explicit --libdir
* Windows: fix asm (`x86_64-w64-mingw32-as` -D flag is for
debug messages, -D defines are not available)
* Mac: override waf adding -install_name (and
-Wl,-compatibility_version -Wl,-current_version)
by moving -dynamiclib from linkflags to ldflags
* Mac: Allow libs with compat version number suffix
(not needed anymore, but may help in the future)
Previously this was inherited via PBD.
On MacOS/X, this adds
"-undefined dynamic_lookup -flat_namespace"
and various "-framework .." options to linkflags
Without this flag, .dylibs fail to link usually because
of missing `-lintl` (Undefined symbols: "_libintl_dgettext")
On other systems this is a NO-OP:
CFLAGS_OSX, CXXFLAGS_OSX and LINKFLAGS_OSX
are only set on the darwin platform.
gtk/gtksettings.c uses different default themes for
Window and Linux/Mac which results in subtle layout differences,
In particular TreeView headers and Tabs.
"MS-Windows" style is hardcoded in gtk msw_rc_style.c
and ardour's clearlooks.rc starts with different defaults.
This forces the default style to a non-existent one.
(might also help with https://tracker.ardour.org/view.php?id=5605)