This is a special case of an Internal Return processor
dedicated to the monitor-section. The main use-case will
be to collect signals from physical ports in a realtime-safe
manner (no connections or Port creation)
This is in preparation to move RoueUI::SoloMuteRelease
to libardour to reuse the implementation in various places.
This also prepares the solo logic for exclusive port-monitoring.
This allows for rt-safe monitoring, collecting data
directly from input-ports without requiring a dedicated connection
or dynamic ARDOUR::AudioPort creation.
This slowly un/mutes the direct monitor signal when listen state
changes.
Listen sends already fade in as well. However un-soloing still
hard-removes the listen send path.
code changes:
bbt_ variables don't need to be global to editor; we only use these in compute_bbt_ruler_scale now anyway
drive the ruler with the same coarse-ified bbt_ruler_scale that we calculate for the snap grid
The location name is only pushed to the backend during
ExportTimespanSelector::add_range_to_selection() which in turn
is only called when timespans are updated.
ArdourButton draws a custom insensitive background, using
the color "gtk_background". This can conflict with gtk's
insensitive background color when using round-corners.
In rare cases it can happen that the GUI thread results in
a call to DropReferences(), while the backend (RCU) still has a
reference to the track and processes the track.
However the call to DropReferences, DiskIO processor will
have cleared the pointer to _track, leading to segfaults when
the processor runs.
Since the DIO processor is owned by the track, one cannot directly
pass a shared_ptr<Track>. That would keep the Track around forever.
However the DIO processor cannot exist without a track passing
a reference is acceptable.