Age | Commit message (Collapse) | Author |
|
|
|
|
|
This fixes MIDI Input follows MIDI track selection (and maybe other
issues) and hopefully breaks nothing else (most places subscribe to
both Stripable::PropertyChanged and PresentationInfo::PropertyChanged).
|
|
|
|
The main process-callback does not participate in DSP computation
|
|
|
|
|
|
|
|
|
|
|
|
Should fix a race during Session::destroy(), Port::PortDrop
which unregisters ports with the backend, but the actual port instance
will still exist.
The engine does no longer have a session-pointer and only calls
CycleStart(); CycleEnd() to clear port-buffers. Trying to clear
and already unregistered Port will crash.
|
|
This does not completely fix the race-condition. The GUI
(e.g. connection-manager) may still hold a shared-ptr reference.
|
|
- Control-protocols may transmit data during cleanup
(e.g. reset surface), and need the Audio-engine to do so.
- destroying the ControlProtocolManager w/o the Session calling
::drop_protocols(), lead to a double free.
|
|
|
|
PortDrop unregisters backend ports, the backend will return a NULL
buffer-pointer, but the I/O object still exists (Metronome, LTC)
AudioBuffer::_data == 0
#0 msvcrt!memset () from C:\Windows\System32\msvcrt.dll
#1 ARDOUR::AudioBuffer::silence (this=0x2c410710, len=256, offset=0) at ../libs/ardour/audio_buffer.cc:88
#2 ARDOUR::AudioPort::cycle_end (this=0x34918730, nframes=256) at ../libs/ardour/audio_port.cc:66
#3 ARDOUR::PortManager::cycle_end (this=this@entry=0x23342770, nframes=nframes@entry=256)
[process callback w/o session]
|
|
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*)
|
|
This fixes "Failed to register <surface> port" when re-loading a session.
|
|
|
|
|
|
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.
|
|
Also don't allow outsiders to call Controllable::set_touching()
|
|
|
|
|
|
Fixes various issues when changing AutomationState while rolling.
|
|
|
|
Calling AutomationList::before() clears the state.
|
|
Also tweak threshold for LPF, assume gain-differences < 10-e5 as
no-change
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This calls for a unified API to invoke
Automatable methods ::transport_located() and ::transport_stopped()
on Stripables, rather than indirectly calling it via
Route::non_realtime_locate(), Route::nonrealtime_handle_transport_stopped()
|
|
|
|
Ensure we set the last tempo end note types per minute.
Clarify that we only set the end ntpm if unset.
|
|
This could result in legacy sessions not being identified correctly and
loading with end tempi of -1.0.
|
|
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.
|
|
|
|
|
|
Resets the previous tempo section's end ntpm to match the start
of a new section whenever a section is added to the map.
|
|
BBT time should be enough to determine the beat.
|
|
|
|
|
|
This does not merge MIDI data, but trims MIDI regions at rec-stop like
non-layered audio-recording does.
|