summaryrefslogtreecommitdiff
path: root/libs/ardour
AgeCommit message (Collapse)Author
2017-08-14Change the template pulldown menu into a tree list. Populate the ↵Ben Loftis
Description view when a template is selected.
2017-08-14Session Metadata: add a Description field.Ben Loftis
* This is a multi-line text field. * If the session is a template, we might show this in the New Session dialog.
2017-08-12use a lock to set/get AutomationList automation statePaul Davis
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
2017-08-11yet another Windows build fix (LV2 preset 89475b2c9)Robin Gareus
2017-08-11Fix Windows builds (amend 89475b2c)Robin Gareus
2017-08-11Fix LV2 Preset path for windowRobin Gareus
2017-08-11Prepare for templates w/descriptionRobin Gareus
2017-08-11Add a new script type for meta-templates: SessionSetupRobin Gareus
2017-08-10Save sample-rate for sessions created from templatesRobin Gareus
2017-08-10remove old PBD::SystemExec bindings (Windows classkeys)Robin Gareus
2017-08-10Add a Lua SetSession signal/hookRobin Gareus
2017-08-10Centralize Lua sandboxingRobin Gareus
2017-08-09Fix windows builds (amend 0c4e0503)Robin Gareus
2017-08-08SystemExec Lua bindings (vfork, fire+forget)Robin Gareus
2017-08-07Add debug-msg for port-handle registrationRobin Gareus
2017-08-07Revert "Work around a Windows crash (for now)"Robin Gareus
This reverts commit 4f2dc77f6f6b5b0de07304e8a4981ff1298ef090.
2017-08-07Work around a Windows crash (for now)Robin Gareus
The root-cause is likely PortAudio backend specific async port-registration, re-establish ports after session creation and after the first callback and it's apparently a race-condition: crash is not 100% reproducible. #10 0x00007ffb156df18a in msvcrt!abort () from C:\Windows\System32\msvcrt.dll #11 0x0000000012597832 in _wassert (_Message=_Message@entry=0x2eaf96f0 L"_port_handle", _File=0x2 <error: Cannot access memory at address 0x2>, _File@entry=0x346a1430 L"../libs/ardour/audio_port.cc", _Line=80) at ../../mingw-w64-crt/misc/wassert.c:54 #12 0x00000000125978e8 in _assert (_Message=0x1282f7e9 "_port_handle", _File=0x1282f7a0 "../libs/ardour/audio_port.cc", _Line=80) at ../../mingw-w64-crt/misc/wassert.c:30 #13 0x00000000120d1a51 in ARDOUR::AudioPort::get_audio_buffer (this=0x34a95a70, nframes=256) at ../libs/ardour/audio_port.cc:80 #14 0x00000000126724f9 in ARDOUR::AudioPort::get_buffer (this=<optimized out>, nframes=<optimized out>) at ../libs/ardour/ardour/audio_port.h:43 #15 0x0000000012435421 in ARDOUR::Session::ltc_tx_send_time_code_for_cycle (this=this@entry=0x37666310, start_frame=0, end_frame=end_frame@entry=256, target_speed=0, current_speed=0, nframes=nframes@entry=256) at ../libs/ardour/session_ltc.cc:180 #16 0x000000001245209f in ARDOUR::Session::no_roll (this=this@entry=0x37666310, nframes=256) at ../libs/ardour/session_process.cc:145 #17 0x0000000012453051 in ARDOUR::Session::fail_roll (this=this@entry=0x37666310, nframes=<optimized out>) at ../libs/ardour/session_process.cc:128 #18 0x0000000012459ebd in ARDOUR::Session::process_without_events (this=this@entry=0x37666310, nframes=nframes@entry=256) at ../libs/ardour/session_process.cc:897 #19 0x000000001245a462 in ARDOUR::Session::process_with_events (this=0x37666310, nframes=256) at ../libs/ardour/session_process.cc:425 #20 0x0000000012451bc5 in ARDOUR::Session::process (this=0x37666310, nframes=nframes@entry=256) at ../libs/ardour/session_process.cc:78 #21 0x00000000120e79fd in ARDOUR::AudioEngine::process_callback (this=0x23316e30, nframes=256) at ../libs/ardour/audioengine.cc:376 #22 0x00000000285390fe in ARDOUR::PortAudioBackend::blocking_process_main (this=this@entry=0x29e67750, interleaved_input_data=interleaved_input_data@entry=0x115e8790, interleaved_output_data=interleaved_output_data@entry=0x115e0050) at ../libs/backends/portaudio/portaudio_backend.cc:1962 #23 0x0000000028539b75 in ARDOUR::PortAudioBackend::process_callback (this=this@entry=0x29e67750, input=0x115e8790, output=0x115e0050, frame_count=<optimized out>, timeInfo=0x3d17fd70, statusFlags=statusFlags@entry=0) at ../libs/backends/portaudio/portaudio_backend.cc:775 #24 0x0000000028539c16 in ARDOUR::PortAudioBackend::portaudio_callback (input=<optimized out>, output=<optimized out>, frame_count=<optimized out>, time_info=<optimized out>, status_flags=0, user_data=0x29e67750) at ../libs/backends/portaudio/portaudio_backend.cc:721 #25 0x00000000632c528f in NonAdaptingProcess () from C:\Program Files\Mixbus32C-4\bin\libportaudio-2.dll #26 0x00000000632c73b2 in PaUtil_EndBufferProcessing () from C:\Program Files\Mixbus32C-4\bin\libportaudio-2.dll #27 0x00000000632d129c in ProcessingThreadProc () from C:\Program Files\Mixbus32C-4\bin\libportaudio-2.dll
2017-08-07Fix Windows builds (amend 7009ff03)Robin Gareus
2017-08-07fix a -WattributesRobin Gareus
2017-08-07Explicitly initialize parent in the copy constructorRobin Gareus
2017-08-07space mattersRobin Gareus
2017-08-07Add Lua Bindings to clone/copy regionsRobin Gareus
2017-08-07Add Lua bindings for RegionMap and region listRobin Gareus
2017-08-06Emit SelectionChange when VCA is removedRobin Gareus
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.
2017-08-06Broadcast info according to EBU tech-specsRobin Gareus
2017-08-06Remove some debug outputRobin Gareus
2017-08-05"Selected" is a PresentationInfo Property.Robin Gareus
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).
2017-08-05Update backend API: read-only MIDI input buffersRobin Gareus
2017-08-05Revert 542d021f, fix number of DSP threadsRobin Gareus
The main process-callback does not participate in DSP computation
2017-08-05Consolidate ctrl surface codeRobin Gareus
2017-08-04Graph profiling: allow to override max DSP thread count & calc avg.Robin Gareus
2017-08-04Fix typo in Lua Vamp APIRobin Gareus
2017-08-03Allow calling IO::silence for yet unregistered ports (Click)Robin Gareus
2017-08-03Some more assert() debuggingRobin Gareus
2017-08-03Ignore cycle-start/end for unregistered portsRobin Gareus
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.
2017-08-03improve 1a288ddd, destroy IO after disconnecting from signals.Robin Gareus
This does not completely fix the race-condition. The GUI (e.g. connection-manager) may still hold a shared-ptr reference.
2017-08-03Fix crash when cleaning up w/o destroying sessionRobin Gareus
- 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.
2017-08-03prevent duplicate playlist-names when re-naming #7438Robin Gareus
2017-08-01Fix some more crashes at session-closeRobin Gareus
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]
2017-08-01Fix LTC encoder removalRobin Gareus
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.
2017-07-31Signal wish to show inline display in gui by lv2:optionalFeatureJohannes Mueller
... in .ttl file rather than by extension_data() in code. That's more in the spirit of LV2.
2017-07-31Indicate whether to show plugin's inline display in GUIJohannes Mueller
This is currently done by an extension data similarly to LV2_INLINEDISPLAY__interface.
2017-07-31Some session cleanup fixes (delete slave, take lock for lua)Robin Gareus
2017-07-30Turn AutomationCtrl into a SessionHandleRefRobin Gareus
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*)
2017-07-28PortManager::unregister_port() must be called with process lockRobin Gareus
This fixes "Failed to register <surface> port" when re-loading a session.
2017-07-28Delete CoreSelection at session closeRobin Gareus
2017-07-27Start a new write-pass when writing automation and locating while rollingRobin Gareus
2017-07-26Fix initial sync to LTC with small buffersizesRobin Gareus
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.
2017-07-25Make start_touch() truly idempotentRobin Gareus
Also don't allow outsiders to call Controllable::set_touching()
2017-07-24fix e838e7f3597Robin Gareus