summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-03-01Fix Luadoc build (follow up 2e9ac80e9, 5794d21a)Robin Gareus
2020-02-29Fix order setting I/O namesRobin Gareus
IO::set_name() may fail, in case Port::set_name() fails. In that case the IOProcessor should not update its name.
2020-02-29Fix off-by-one, start "Send" names at bitslot 1 (not 2)Robin Gareus
Session::next_*_send_id() starts counting at bit 1. Probably for historical reasons (bit zero = 1).
2020-02-29no pre-release warning dialog if beyond pre0Paul Davis
2020-02-29Fix 'samples / frames' typo in PBD::stacktrace()John Emmas
2020-02-29Lua Amplifier plugin with gain-coeff ratio controlsRobin Gareus
2020-02-28Convert v5 send state-stateRobin Gareus
2020-02-28Bail out if Playlist cannot be createdRobin Gareus
This prevents later crashes. Tracks cannot exist without a playlist.
2020-02-28Display recent session-load errors in the GUIRobin Gareus
Dumping errors to stderr only is not very useful. Particularly not on Windows and MacOS. Even though a user may not be able to address the issue, this can lead to better reports vs just printing "corrupt state".
2020-02-28Allow to limit error dumpRobin Gareus
This is in preparation of displaying verbose errors to the user.
2020-02-28Ensure that regions have sources when savingRobin Gareus
Otherwise this will lead to a corrupt state: ERROR: Session: XMLNode describing a AudioRegion references an unknown source id ERROR: Session: cannot create Region from XML description. Can not load state for region ERROR: Playlist: cannot create region from XML and a track without playlist is created, resulting in a later crash. Eventually SessionPlaylists::load() needs to handle this gracefully, but this should help catch cases causing the actual issue.
2020-02-28NO-OP: whitespace, re-indentRobin Gareus
2020-02-28Fix some recursive undo removalRobin Gareus
~StatefulDiffCommand() may trigger UndoTransaction::command_death() which may delete the StatefulDiffCommand() that's just being destroyed. This depends on the signal-connection order, which is undefined. In any case when a shared_ptr<> object is being destroyed it means that all references to it are already gone. There's no need to emit drop_references from the d'tor.
2020-02-28Fix script to bypass all pluginsRobin Gareus
deactivate() hard bypassed all plugins, this made plugins with a dedicated en/disable soft-bypass option inaccessible.
2020-02-28Restore visible automation lanes (#7914)Robin Gareus
On session re-load only automation lanes with events were displayed, regardless of visibility state. This allowed for inconsistent state (menu showed them as visible even if they were not).
2020-02-28Fix double free of undo commands (amend 9e6435ff145)Robin Gareus
This fixes a case when deleting a plugin, deletes all automation undo/redo events: <UndoTransaction name="add automation event"> <MementoCommand type-name="ARDOUR::AutomationList"> ... `delete this;` calls the d'tor which emits drop_references(), that leads to UndoTransaction::command_death() destroying the object, whichh causes a double free.
2020-02-28Fix duplicate control-ID when copying processors or proc stateRobin Gareus
Ideally we'd use a "retain ID when present", so that GUI object state of automation lanes and inline controls will be retained.
2020-02-27Fix libwebsockets compatRobin Gareus
LWS_CALLBACK_HTTP_CONFIRM_UPGRADE is only available since v3.1.0
2020-02-27Dialog default to cancel (#7915)Robin Gareus
There are various ways to cancel a dialog. Only checking for RESPONSE_CANCEL is not sufficient. e.g. Esc causes a delete-event. * Gtk::RESPONSE_CLOSE * Gtk::RESPONSE_REJECT * Gtk::RESPONSE_DELETE_EVENT * Gtk::RESPONSE_CANCEL * Gtk::RESPONSE_NO Among others this fixes "Clicking session > open, then hitting ESC opens the currently selected folder and session"
2020-02-27Punch/Loop GUI control sensitivityRobin Gareus
2020-02-27Fix removal of punch rangeRobin Gareus
set_auto_punch_location() is a NO-OP when there's no punch range. This disconnects `punch_connections`, clears session-events, and emits auto_punch_location_changed().
2020-02-27Add signals to indicate Punch/Loop constraintsRobin Gareus
This is in preparation for GUI sensitivity of Loop and Punch actions.
2020-02-27Avoid occasional response delay when handling HTTP in the websockets surfaceLuciano Iam
2020-02-27Make previous commit 81ecc2b compatible with libwebsockets==2Luciano Iam
2020-02-27Gracefully reject HTTP requests reaching the websockets surfaceLuciano Iam
2020-02-27Prevent concurrent loop and punch recording (backend)Robin Gareus
This also prevents switching between punch-in/out record and looping without transport-stop.
2020-02-26Add example Lua DSP script with multiple MIDI outputsR
2020-02-26Add support for Lua DSP scripts with multiple MIDI outputsR
2020-02-26And removing even more unused forward declarations.André Nusser
2020-02-26Consolidate loop en/disable callsRobin Gareus
2020-02-26Update script to use new process_map() APIRobin Gareus
2020-02-26Add a mute/gate pluginRobin Gareus
2020-02-26Fix DSP::process_map() plugin-pin I/O map handingRobin Gareus
The previous approach failed in case where PluginInsert uses no-inplace buffers with a linear map. Since buffers are replicated up to a total of number of all (inputs + outputs), the number of output buffers could not be determined. There was insufficient information using the I/O map alone. With a known number of outputs processing and applying the i/o map is also a lot easier and faster. This break the API of process_map().
2020-02-26Add Lua bindings for libardour amp's simple gainRobin Gareus
2020-02-26Fix PI bypass, fix apply linear pin-connectionsRobin Gareus
Previously this could assert(), copying a buffer to itself.
2020-02-26Remove easter-eggRobin Gareus
Every day can be x-mas day, how else can we be lovers? :)
2020-02-26Fix Conditional jump or move depends on uninitialised value(s)Robin Gareus
(valgrind trace, line-numbers from mixbus+6.0-190-g0ec6bc35a) This may happen initially for unconnected graph nodes, e.g. Foldback Busses from ARDOUR::Session::post_engine_init(). ==29797== Conditional jump or move depends on uninitialised value(s) ==29797== at 0x6167D3F: trace_terminal(boost::shared_ptr<ARDOUR::Route>, boost::shared_ptr<ARDOUR::Route>, bool) (session.cc:2174) ==29797== by 0x6167D99: trace_terminal(boost::shared_ptr<ARDOUR::Route>, boost::shared_ptr<ARDOUR::Route>, bool) (session.cc:2174) ==29797== by 0x6167D99: trace_terminal(boost::shared_ptr<ARDOUR::Route>, boost::shared_ptr<ARDOUR::Route>, bool) (session.cc:2174) ==29797== by 0x616890D: ARDOUR::Session::resort_routes_using(boost::shared_ptr<std::__cxx11::list<boost::shared_ptr<ARDOUR::Route>, std::allocator<boost::shared_ptr<ARDOUR::Route> > > >) (session.cc:2289)
2020-02-26Fix potential memory corruption at session closeRobin Gareus
(valgrind trace, line-numbers from mixbus+6.0-190-g0ec6bc35a) ==29797== Invalid write of size 4 ==29797== at 0x619BB3F: boost::dynamic_bitset<unsigned int, std::allocator<unsigned int> >::reference::do_reset() (dynamic_bitset.hpp:120) ==29797== by 0x6196002: boost::dynamic_bitset<unsigned int, std::allocator<unsigned int> >::reference::do_assign(bool) (dynamic_bitset.hpp:122) ==29797== by 0x618F670: boost::dynamic_bitset<unsigned int, std::allocator<unsigned int> >::reference::operator=(bool) (dynamic_bitset.hpp:107) ==29797== by 0x617E426: ARDOUR::Session::unmark_send_id(unsigned int) (session.cc:5633) ==29797== by 0x6156714: ARDOUR::Send::~Send() (send.cc:125) ==29797== by 0x5CE12A7: ARDOUR::InternalSend::~InternalSend() (internal_send.cc:71) ==29797== by 0x5CE1319: ARDOUR::InternalSend::~InternalSend() (internal_send.cc:76) ==29797== by 0x1556128: void boost::checked_delete<ARDOUR::InternalSend>(ARDOUR::InternalSend*) (checked_delete.hpp:34) ==29797== by 0x155E689: boost::detail::sp_counted_impl_p<ARDOUR::InternalSend>::dispose() (sp_counted_impl.hpp:92) ==29797== by 0xCC0E30: boost::detail::sp_counted_base::release() (sp_counted_base_std_atomic.hpp:110) ==29797== by 0xCC0EA6: boost::detail::shared_count::~shared_count() (shared_count.hpp:426) ==29797== by 0x134BD15: boost::shared_ptr<ARDOUR::InternalSend>::~shared_ptr() (shared_ptr.hpp:366) ==29797== by 0x60FACC1: ARDOUR::Route::~Route() (route.cc:498) ==29797== by 0x60FAF4D: ARDOUR::Route::~Route() (route.cc:517) ==29797== by 0x166144C: void boost::checked_delete<ARDOUR::Route>(ARDOUR::Route*) (checked_delete.hpp:34) ==29797== by 0x166338F: boost::detail::sp_counted_impl_p<ARDOUR::Route>::dispose() (sp_counted_impl.hpp:92) ==29797== by 0xCC0E30: boost::detail::sp_counted_base::release() (sp_counted_base_std_atomic.hpp:110) ==29797== by 0xCC0EA6: boost::detail::shared_count::~shared_count() (shared_count.hpp:426) ==29797== by 0xCD2385: boost::shared_ptr<ARDOUR::Route>::~shared_ptr() (shared_ptr.hpp:366) ==29797== by 0x615D0E5: ARDOUR::Session::~Session() (session.cc:455) ==29797== by 0x615D4A3: ARDOUR::Session::~Session() (session.cc:461)
2020-02-25Fix deadlock, shared_ptr d'tor called from ScopedConnectionList d'torRobin Gareus
See https://ardour.org/styleguide.html #10 https://pastebin.com/gJfrNhL2
2020-02-25Consolidate shared-ptr debuggingRobin Gareus
2020-02-25Fix mem-leak, Playlist/Region SessionHandleRefRobin Gareus
When a playlist is deleted and drops_references(), any undo/redo StatefulDiffCommand referncing playlist invoke Destructible::drop_references() of the Command. This leads to command_death(). As opposed to UndoTransaction::clear() the StatefulDiffCommand was not destroyed. In case of playlists StatefulDiffCommand::_changes contains PBD::SequenceProperty<std::list<boost::shared_ptr<Region> > > and shared pointer reference of the playlist regions were kept indefinitely. This fixes the following scenario: New session, import an file, delete the created track, clean up unused sources (delete unused playlists)[, quit]. A reference to the imported region was kept, because of the playlist's undo command (insert region). Yet the source file was deleted. PS. Most playlist changes are accompanied by GUI zoom/selection MementoCommands. Those are currently never directly dropped. command_death() leaves those in place.
2020-02-25Remove undo function from global namespaceRobin Gareus
2020-02-25NO-OP: whitespaceRobin Gareus
2020-02-25Cleanup SourceList: remove unused copy/pasted region-list codeRobin Gareus
2020-02-25NO-OP: whitespaceRobin Gareus
2020-02-25SourceList: Drop references as requestedRobin Gareus
2020-02-25Disable Transport Master boost debugRobin Gareus
2020-02-25Fix cleanup, lock source-list, emit SourceRemovedRobin Gareus
This fixes various cases where SessionHandleRef shared_ptr<> were kept when sources were removed.
2020-02-25Remove history file when it's emptyRobin Gareus
Various operations clear the history (e.g. cleanup). In that case the GUI correctly had an empty Undo/Redo history, but the file on disk was left in place. Next session load restored the old, incorrect Undo/Redo history.
2020-02-25Update region-factory boost-debugRobin Gareus