summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
AgeCommit message (Collapse)Author
2016-05-24more inter-thread progress fixes; slight change of semantics:Robin Gareus
Background thread now *must* set "done" as last step. (they already do since various error conditions don't result in "done") This fixes a race: background thread Session::write_one_track() sets "done" to true. Editor::freeze_route () continues, sets current_interthread_info to NULL. thread continues and tries to set current_interthread_info.done before terminating -> Crash. This also ensures that singleton threads created with "pthread_create_and_store" remain unique.
2016-05-14whitelist libardour bindings as rt-safe for session-scriptsRobin Gareus
2016-05-07make boost shared_ptr debugging a little easier to turn on/offPaul Davis
2016-05-07a few strategic LocaleGuards..Robin Gareus
..to prevent switching forth and back during individual ::state(), ::set_state() when loading/saving the session or locating.
2016-05-06add API to load Instrument Preset when creating a Midi trackRobin Gareus
2016-05-04OMNIBUS COMMIT: prefer const XMLNode::property method (and provide a real one)Paul Davis
2016-05-03another (non critical) concurrency issue:Robin Gareus
Ignore latency-updates while removing tracks. remove_tracks() calls disconnect_all() which can trigger the backend to perform a latency-recompute in a different thread (process thread). That calls Session::update_latency() which iterates over all routes including the one(s) to be deleted. At the same time disconnect_all() may propagate Port::PostDisconnect() leading to a lock contention. (no crash just a lot of unnecessary work. remove_routes() calls update_latency_compensation() which triggers a recompute if needed)
2016-04-28flush pending Session Events at session closeRobin Gareus
This prevents a memory leak: The session is closed. The session-butler drops memory pool trash. The Engine keeps running. Once the AudioEngine is taken down (sample-rate switch, or at exit), the backend process-thread is terminated but there is no trash-can anymore. If there are unprocessed SessionEvents, this calls free_per_thread_pool() -> cp->parent()->add_to_trash (cp). "parent()" in this case the trash-can the butler emptied.
2016-04-26allow to duplicate tracks with sends or load templates with sends/insertsRobin Gareus
2016-04-26don't show engine dialog when loading a session..Robin Gareus
..and the engine is running at the desired samplerate
2016-04-24reduce debug-build overhead.Robin Gareus
2016-04-24we need the process lock after all..Robin Gareus
2016-04-24plug some memory leaks in libardourRobin Gareus
2016-04-24further tweaks to session closeRobin Gareus
2016-04-24Disconnect Signals before dropping portsRobin Gareus
significantly speeds up session close
2016-04-23delegate port-connections to low priority thread.Robin Gareus
This prevents a deadlock with (some versions) jack: * add new instrument track with instrument * configure processors (takes processor lock) * add I/Os (delivery) -> create ports * auto-connect ports * jack port-connect -> jack graph re-order * Ardour graph-re-order * needs processor lock (to check sends)
2016-04-22fix send-id "0" when loading sessionRobin Gareus
Send::set_state() unsets the current send-id before setting the new one, but by default _bitset defaults to zero. This may lead to unset an existing send "0"
2016-04-20Mixbus: auto-connect monitor-sectionRobin Gareus
Mixbus does not expose the "auto_connect_standard_busses" preference and forces it to false.
2016-04-18add notification if Engine Rate changes and mismatches session's SRRobin Gareus
2016-04-18never ever change sample-rate saved with the session after creation.Robin Gareus
2016-04-15special case mixbus routingRobin Gareus
2016-04-12add a new counter (for sidechain numbering)Robin Gareus
2016-04-10expose Undo Commands to LuaRobin Gareus
Some trickery is needed here to manage object lifetimes and multiple inheritance.
2016-03-26add "no-inplace" buffers.Robin Gareus
When allowing to cross-connect plugin-ports, inplace processing can no longer be used. We need a complete set of independent input and output buffers. Since scratch and silent buffers are used by the various plugin implementations we cannot re-use them in the PluginInsert. Besides we need a complete BufferSet which can hold both: ins + outs.
2016-03-16Midi Busses? why yes!Robin Gareus
2016-03-14use ForGroup to flag and detect route-group based control changesPaul Davis
2016-02-29initialize uninitialized variableRobin Gareus
2016-02-29pre-process (silence) before export to flush reverb tails etc.Robin Gareus
2016-02-24potential mem corruption at session close:Robin Gareus
ARDOUR::Session::~Session() ARDOUR::Route::~Route() ARDOUR::InternalReturn::~InternalReturn() ARDOUR::Return::~Return() ARDOUR::Session::unmark_return_id(unsigned int) boost::dynamic_bitset<unsigned int, std::allocator<unsigned int> >::reference::do_assign(bool) -> Invalid write of size 4 -> 0 bytes inside a block of size 4 free'd Thanks to The_CLA for valgrinding this.
2016-02-23Implement Lua session-scriptsRobin Gareus
2016-02-22add syntax and scaffolding for MIDI binding maps to refer to selected ↵Paul Davis
tracks/busses. THIS DOES NOT WORK YET. Selection information is not available in libardour at this time
2016-02-20add processor lookup by PBD::ID via sessionRobin Gareus
In preparation for Lua bindings this completes the basic set of Session object lookup: route, source, controllable, region, processor
2016-01-25change exposed type of various objects' gain controls; remove Amp::gain() as ↵Paul Davis
a shortcut
2016-01-22fix rebase issue from masterPaul Davis
2016-01-22rename Controllable::WholeGroup => InverseGroup to reflect real intent.Paul Davis
Add logic to RouteGroupMember::use_group() to implement the real intent of InverseGroup
2016-01-22first compiling, mostly working version of group controls changesPaul Davis
2016-01-19Add all_tracks_rec actionsBen Loftis
2016-01-19Revert "mackie: still respond to route groups visibility changes"Paul Davis
This reverts commit a9ec547457bfa65655ee946063426f1ba85b6f91.
2016-01-19mackie: still respond to route groups visibility changesPaul Davis
2016-01-18add group disposition argument to Route::set_gain() and use it in various UIsPaul Davis
Executive decisions were necessary in a couple of places about the correct group disposition behaviour, notably faderport and OSC surfaces
2016-01-18move Amp::GainControl out into its own source module and out of AmpPaul Davis
2016-01-18change ownership of the AutomationControl used by Amp.Paul Davis
It used to be owned by Amp. Now it is owned by Amp's owner
2016-01-16Change last commit to use it's own variable rather than borrowing solo'sLen Ovens
2016-01-16Mackie Control: fix global Solo lamp to get signalled for listens active too.Len Ovens
2016-01-08Fix monitor-section session-property vs preference state.Robin Gareus
The initial value of Config::get_use_monitor_bus() may not reflect the current session's state when loading a session.
2016-01-02change Controllable::set_value() API to include grouped control consideration.Paul Davis
This also removes Route::group_gain_control() and associated machinery. Not yet tested with Mackie or other surfaces. More work to done to start using the group capabilities, and also potentially to add or derive more controls as RouteAutomationControls
2015-12-26fix samplerate initialization.Robin Gareus
2015-11-25Prevent crash at session-close when analysing.Robin Gareus
The Analyser only holds a weak-pointer the the Source, session-destruction frees the actual Source, which is fatal for any ongoing audio analysis. This fix simply waits for the current ongoing analysis to complete, ideally TransientDetector::run, EBUr128Analysis::run, OnsetDetector::run and AudioAnalyser::analyse could be interrupted. Alternate option: cancel the Analyser::work thread (and re-create with the every session).
2015-11-14get PlaylistDisposition argument of Session::new_route_from_template() workingPaul Davis
2015-11-13substantial part of infrastructure required for track/bus duplicationPaul Davis
This includes removing the removal of ID values in XML, and its replacement with thread-local forcing of ID resets, implemented in a previous commit