Age | Commit message (Collapse) | Author |
|
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.
|
|
|
|
|
|
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.
|
|
#0007433)
|
|
(OnkelDead)
|
|
... 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.
|
|
If the width of the display area is below 200 px, we switch from the graph
display to displaying only two bars, one for output level and one for gain
reduction. In the bar mode we also visualize threshold and ratio.
|
|
|
|
|
|
|
|
|
|
When lifting the compressor curve by the makeup gain value the actual
treshold (the level when the curve kinks in) is also lifted. Therefore we need
to adjust the dashed line indicating the threshold as well as the level when
the color gradient to show compression kicks in.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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*)
|
|
Derived classes need to explicitly specify namespace and class
to avoid ambiguities (even for private members)
|
|
(which now needs to link to it)
|