Age | Commit message (Collapse) | Author |
|
|
|
* Emit signal once midnam was actually updated
* only re-read midnam if was it changed. This allows idempotent calls to
read_midnam() - from the same thread.
At session-load a synth-plugin may load a soundfont in the background
and emit midnam_update() after the synth was initialized but before the
GUI thread connects to the signal. By making the call idempotent the
GUI can call read_midnam() after connecting to the signal to catch up.
|
|
|
|
|
|
If the new optional argument is true, then the first bundle will also
check if it has other connections than to the given bundle.
|
|
Also use the same iteration logic than in Bundle::connect to avoid
mismatched port types.
|
|
IO used to manually keep a list of user bundles it was connected to, but
it didn't work correctly: sometimes it didn't notice that a bundle
wasn't connected anymore, and the list wasn't correctly persisted across
save/reloads among other things.
Moreover, it wasn't needed at all, since the user bundles are correctly
listed by _session.bundles() and IO already notices they are connected !
Remove all occurrences of |_bundles_connected| and |check_bundles_connected|.
|
|
Forward the optional |allow_partial| boolean to |Bundle::connect|.
|
|
When |allow_partial| is true, only when the number of channels of a
given DataType is the same for both bundles are the corresponding
channels connected together.
When |allow_partial| is false (the default), the number of channels must
match for each DataType (the ChanCounts must be equal) for the
connection to be attempted.
This also fixes the logic in case two bundles have the same number of
channels, or even the same ChanCounts, but not with the DataTypes in the
same order (so connecting the ith channel of the bundle to the ith
channel of the other bundle makes no sense).
|
|
|Bundle::nchannels()| creates a ChanCount on demand, by iterating over
the |_channel| member variable. The sum of all |nchannels().n(t)| over
all non-NIL DataTypes |t| is thus equal to |_channel.size()|.
Consequently, calling |nchannels().n_total()| is a convoluted (and slow)
way of getting |_channel.size()|. Add a method |Bundle::n_total()| that
directly returns the latter.
|
|
Also put a comment about the ordering of DataTypes.
|
|
|
|
This breaks compilation (GUI)
|
|
|
|
|
|
|
|
This fixes various Lua-scripts: There are no explicit bindings to
turn int64_t, uint64_t into a const reference.
Besides it doesn't make sense to use a reference for constant _t that can
be directly loaded in CPU register or on the stack.
|
|
|
|
|
|
Remove special-cased script types. Allow Action-Scripts to be re-used
for session-setup or route-templates.
|
|
|
|
|
|
|
|
Don't allow to load sessions created with a newer version of Ardour
with an old one (no forward compatibility).
|
|
Remove various checks, add assert() for now (perhaps some old sessions?)
This fixes an off-by one issue when adding tracks (presentation
info order in add_routes_inner)
|
|
This is in preparation for "advanced session setup" allow a SessionSetup
Lua script to create the master-bus.
|
|
* requested_physical_in/out was unused
* input/output Autoconnect just overrides Preference/Config
(can be done by a template script)
* master_out_channels is kept for compatibility (allow to create
new empty session)
|
|
Description view when a template is selected.
|
|
* This is a multi-line text field.
* If the session is a template, we might show this in the New Session dialog.
|
|
It isn't 100% clear that we should use the list's data lock, but it seems quite likely
that this is the correct design, because of the interlock between data being present
and automation state
|
|
|
|
|
|
|
|
|
|
chicken/egg:
Stripable d'tor which calls remove_stripable_by_id() will only be called
when the Stripable is destroyed. But as long as the GUI selection holds a
shared-ptr reference to the Stripable, it won't be destroyed.
|
|
|
|
|
|
Fixed a crash if an x-run or graph-reorder happens after the LTC encoder
has been destroyed (possible at session-close or after disabling
the encoder). This also fixes duplicate callbacks in case the
encoder was re-enabled times in an active session.
|
|
... in .ttl file rather than by extension_data() in code. That's more in the
spirit of LV2.
|
|
This is currently done by an extension data similarly to
LV2_INLINEDISPLAY__interface.
|
|
This fixes a crash with GUI elements which are only deleted during GUI
Idle and hold a Reference to a Controllable,
The session is already destroyed at that point:
ARDOUR::CoreSelection::remove_control_by_id(PBD::ID const&)
ARDOUR::AutomationControl::~AutomationControl()
ARDOUR::SlavableAutomationControl::~SlavableAutomationControl()
ARDOUR::MonitorControl::~MonitorControl()
boost::detail::sp_counted_base::destroy()
boost::detail::sp_counted_impl_p<AudioGrapher::Interleaver<float>::Input>::dispose()
boost::detail::sp_counted_base::release()
boost::detail::shared_count::~shared_count()
boost::shared_ptr<PBD::Controllable>::~shared_ptr()
boost::shared_ptr<PBD::Connection>::~shared_ptr()
ArdourWidgets::BindingProxy::~BindingProxy()
ArdourWidgets::ArdourButton::~ArdourButton()
VCAMasterStrip::~VCAMasterStrip()
int idle_delete<VCAMasterStrip>(VCAMasterStrip*)
|
|
Ardour follow_slave() does nothing (not even seek) if the slave is not
locked.
The LTC-slave assumes it's locked if LTC is stable for 5 continuous
process-calls.
If the difference of Ardour's transport-position to the LTC-timecode
is large (> 2sec), the slave reset itself (assuming drift, seek don't vari-
speed).
A LTC-slave does reset does reset the locked counter.
Hence: If initially Ardour's transport differs > 2 sec and the buffersize
is small (many process-callbacks), the slave kept resetting itself
never informing Ardour that it locked to the external TC, and Ardour
never issued a seek.
|
|
Fixes various issues when changing AutomationState while rolling.
|
|
|
|
|
|
|
|
|
|
|
|
Setting a tempo to 'Continue' via right click puts it in a permanent state
of continuing the previous section's end tempo (basically what
'Lock Continue' should have been). This can be disabled (unlocked) by
selecting 'Don't Continue'.
Remove the previous temporary 'Continue' function.
Reorganise menu to separate position lock style from more commonly
used functions.
|
|
|