Age | Commit message (Collapse) | Author |
|
This is also needed when exporting.
|
|
|
|
ARDOUR_UI
|
|
|
|
This means that using the wheel in the GUI (or equivalent) ends its effect at transport stop
|
|
'lower_bound()' iterates between param #1 and param #2, comparing the result
with param #3 - either by making the comparison internally or by deferring to
an external comparator function. Prior to C99 however, BOTH cases required
param #3 to match the type being iterated.
In the case of a deferred comparison, there was apparently a proposal to
relax this restriction in C99, though I'm not sure if it in fact got
implemented (can't find any examples of it anywhere...)
|
|
To reproduce. Launch, right click in ruler area then drag down
until over the master track and let go.
#0 0x0000555555ba1d44 in boost::shared_ptr<ARDOUR::Route>::get() const (this=0x8) at /usr/include/boost/smart_ptr/shared_ptr.hpp:748
#1 0x0000555555ba0a2f in boost::dynamic_pointer_cast<ARDOUR::Track, ARDOUR::Route>(boost::shared_ptr<ARDOUR::Route> const&) (r=...)
at /usr/include/boost/smart_ptr/shared_ptr.hpp:904
#2 0x000055555650b92b in RouteUI::track() const (this=0x0) at ../gtk2_ardour/route_ui.cc:1885
#3 0x0000555555d0b92f in Editor::popup_track_context_menu(int, int, ItemType, bool) (this=
0x555557a3efd0, button=1, time=600214966, item_type=StreamItem, with_selection=false) at ../gtk2_ardour/editor.cc:1595
#4 0x0000555555e1a4cf in Editor::button_release_handler(ArdourCanvas::Item*, _GdkEvent*, ItemType) (this=0x555557a3efd0, item=
0x555557b2fe00, event=0x7fffffffc310, item_type=StreamItem) at ../gtk2_ardour/editor_mouse.cc:1543
....
|
|
Lua arrays (tables) start counting at one.
Also `for i = a, b do .. end` is inclusive: a <= i <= b
|
|
|
|
This allows users to rename sends without enforcing a numeric
bitslot number. However this prevents a user to to use "send" names
that are potentially used for new sends or inserts.
|
|
Ardour statically links libardour against zita-convolver,
this is required because it's used in plugins and available
by Lua scripts.
libzita-convolver has been modified to be in a custom namespace
and extern global symbols have been removed.
On most GNU/Linux distros system-wide default zita-convolver
is not compatible nor suitable to be used as-is.
|
|
|
|
This is an effective NO-OP
* Some methods have been re-named to improve consistency
* Duplicate function calls were removed:
RouteUI::set_route() already updates mute/solo
MixerStrip does not have to update it again
* virtual methods have been protected
|
|
ConfigurationChanged() is emitted after processors have been
reconfigured (e.g adding/removing a plugin).
The button state needs to be updated after setup.
Bfore d6315618da this worked because _route->io_changed()
is emitted before the processors are re-configured, and
phase_control()->Changed() triggered an update after that.
PS. The motivation for d6315618da are Mixbusses. They have no input
channels, but a Return processor before the polarity processor.
|
|
This fixes an issue when trying to rename a send or insert
to the current name (no-rename).
::rename_processor() checks if io_name_is_legal(),
Since the current name is already in use, a numeric-suffix
was added.
|
|
Add new folders, update and alphabetically sort HAVE_[] defines.
Specify that .h header files are C++ (fixes some warnings)
|
|
|
|
|
|
More work needed to fix requirement in StartupFSM that ::load_from_application_api()
is called before ::start()
|
|
|
|
From #ardour IRC:
> there have been a few times that I wished a-Delay could boost volume
> it has an "output gain" slider, but it only subtracts. the maximum is 0db
> delay is a big part of guitar solos, so a boost in the same plugin would be awesome
|
|
|
|
IO::set_name() may fail, in case Port::set_name() fails.
In that case the IOProcessor should not update its name.
|
|
Session::next_*_send_id() starts counting at bit 1.
Probably for historical reasons (bit zero = 1).
|
|
|
|
|
|
|
|
|
|
This prevents later crashes. Tracks cannot exist without a playlist.
|
|
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".
|
|
This is in preparation of displaying verbose errors to the user.
|
|
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.
|
|
|
|
~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.
|
|
deactivate() hard bypassed all plugins, this made plugins with
a dedicated en/disable soft-bypass option inaccessible.
|
|
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).
|
|
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.
|
|
Ideally we'd use a "retain ID when present", so that GUI object
state of automation lanes and inline controls will be retained.
|
|
LWS_CALLBACK_HTTP_CONFIRM_UPGRADE is only available since v3.1.0
|
|
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"
|
|
|
|
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().
|
|
This is in preparation for GUI sensitivity of Loop and Punch actions.
|
|
|
|
|
|
|
|
This also prevents switching between punch-in/out record
and looping without transport-stop.
|
|
|
|
|
|
|