* You can now show a selector for each track, rather than one global dialog
* Removed the 'cancel' button: it was too easy to unintentionally revert your selection
* Correctly sort and name new playlists when they are added or renamed from the P menu
* Fix problem where list contents disappeared when changing desktops (on_unmap_event)
* new global playlist functions for {all | rec-armed | selected} tracks.
* new API passes (bool copy) arg instead of separate functions for copy_X.
* consistently use mapover_X functions to consolidate code
* update Lua bindings to match
* avoid memory allocation (remove std:set<>&)
* skip nested loop using port-names as IDs
However this adds a bit of extra cost in case input ports are
monitored: get_port_by_name() and get_buffer()
glib atomic operations include a complete act as a full
compiler and (where appropriate) hardware memory barrier.
std::atomic<> allows dedicated acquire and release barrier
semantics which are not available with glib.
Use the same sorting for the menu list and playlist_selector items
Implement Copy, Share and Steal playlist actions. Need a RouteTimeAxis for this.
Rename persistent dialog buttons to make it clear you can Revert
Window is now no longer modal
Subscribes to new Track::PlaylistAdded signal
Move RouteUI setting to new dedicated method
Rename show_for to show
Hide PlaylistSelector if DropReference signal is emitted
* Add an option to use a playlist without stealing its ownership. (libardour)
* Tracks emit PlaylistAdded when a new playlist is created either by copying or by creating a new empty pl
* no version-check should be necessary because when opening an old session,
playlists can be looked-up by discrete names and will be tracked by ID thereafter
Sensitivity is managed by EngineControl::update_sensitivity,
prior settings in update_midi_options() were ignored.
This also fixes the layout (MIDI dropdown width) and midi-option
value when changing backends.
EngineControl::device_list_changed calls
list_devices, which clears and refills the
I/O dropdown. This resulted in changed callbacks
EngineControl::input_device_changed which in turn
unsets the device in the backend:
set_input_device_name("").
The I/O devices were reset (use first available).