ardour.git
5 years agoRemove unusued API Create/Delete Binding
Robin Gareus [Sat, 23 Mar 2019 00:28:23 +0000 (01:28 +0100)]
Remove unusued API Create/Delete Binding

5 years agoUpdate cAutomationControl values when copying state
Robin Gareus [Fri, 22 Mar 2019 13:12:30 +0000 (14:12 +0100)]
Update cAutomationControl values when copying state

This fixes a bug that can result in inconsistent session-state when
copying plugin state from one plugin to another (via drag/drop
ProcessorBox::object_drop, LINK).

The underlying plugin state and settings are copied, port _shadow_data
is updated, and ::get_parameter() shows the correct new value.

However the Controllable was not updated. On Session save/restore
the value may have be lost or was inconsistently restored.

5 years agoPrevent crashes when copying LV2 plugin state
Robin Gareus [Fri, 22 Mar 2019 13:09:03 +0000 (14:09 +0100)]
Prevent crashes when copying LV2 plugin state

LV2 plugin state-loading is generally safe to perform concurrently
with running the plugin (as per LV2 spec). However concurrent run()
is not.

5 years agoNO-OP: reduce scope
Robin Gareus [Fri, 22 Mar 2019 13:06:51 +0000 (14:06 +0100)]
NO-OP: reduce scope

5 years agoAdd ultra-insane CBR 320kbit mp3 quality
Robin Gareus [Thu, 21 Mar 2019 20:58:08 +0000 (21:58 +0100)]
Add ultra-insane CBR 320kbit mp3 quality

5 years agoworking but still confusing fix for ensuring that playlist shared-with data is correc...
Paul Davis [Thu, 21 Mar 2019 04:16:57 +0000 (21:16 -0700)]
working but still confusing fix for ensuring that playlist shared-with data is correct when duplicating tracks.

Confusing because orig_track_id is still being switched to the
NEW track, and shared_with refers to the OLD one

5 years agosafety fix, in case non-Route stripable is selected
Paul Davis [Thu, 21 Mar 2019 03:50:29 +0000 (20:50 -0700)]
safety fix, in case non-Route stripable is selected

5 years agosort track selection into presentation order before duplicating.
Paul Davis [Thu, 21 Mar 2019 03:42:02 +0000 (20:42 -0700)]
sort track selection into presentation order before duplicating.

This ensures that new tracks appear in the correct order (#7549)

5 years agofix Session::new_route_from_template() to use playlist IDs and not names. This also...
Paul Davis [Thu, 21 Mar 2019 03:09:17 +0000 (20:09 -0700)]
fix Session::new_route_from_template() to use playlist IDs and not names. This also fixes #7674

5 years agoremove "rename_playlist" argument from Route::set_name_in_state().
Paul Davis [Thu, 21 Mar 2019 03:02:07 +0000 (20:02 -0700)]
remove "rename_playlist" argument from Route::set_name_in_state().

We no longer find playlists by name when constructing tracks, so
the name of the playlist is not relevant

5 years agofix all surfaces' available action menus
Paul Davis [Wed, 20 Mar 2019 21:23:23 +0000 (14:23 -0700)]
fix all surfaces' available action menus

Note: this replicated code is ridiculous

5 years agofix Mackie available action menu
Paul Davis [Wed, 20 Mar 2019 20:05:35 +0000 (13:05 -0700)]
fix Mackie available action menu

5 years agoActionManager::get_all_actions() no longer includes <Actions> in the paths it returns...
Paul Davis [Wed, 20 Mar 2019 18:15:47 +0000 (11:15 -0700)]
ActionManager::get_all_actions() no longer includes <Actions> in the paths it returns, part 3 (GUI)

5 years agoActionManager::get_all_actions() no longer includes <Actions> in the paths it returns...
Paul Davis [Wed, 20 Mar 2019 18:15:34 +0000 (11:15 -0700)]
ActionManager::get_all_actions() no longer includes <Actions> in the paths it returns, part 2 (surface support)

5 years agoActionManager::get_all_actions() no longer includes <Actions> in the paths it returns...
Paul Davis [Wed, 20 Mar 2019 18:15:22 +0000 (11:15 -0700)]
ActionManager::get_all_actions() no longer includes <Actions> in the paths it returns, part 1

5 years agomake ::ardour_action_name() private to Bindings, because nothing else uses it and...
Paul Davis [Wed, 20 Mar 2019 18:12:06 +0000 (11:12 -0700)]
make ::ardour_action_name() private to Bindings, because nothing else uses it and it semi-exposes the <Actions> nonsense

5 years agodo not create a (throwaway) playlist during track creation
Paul Davis [Tue, 19 Mar 2019 22:42:54 +0000 (15:42 -0700)]
do not create a (throwaway) playlist during track creation

5 years agoFix incorrectly saved un-used playlists
Robin Gareus [Tue, 19 Mar 2019 20:56:13 +0000 (21:56 +0100)]
Fix incorrectly saved un-used playlists

This addresses issues with session-cleanup and region-cleanup in
some sessions.

The root-cause why some unused playlists were saved in the session XML
under <Playlists> and not <UnusedPlaylists> is not known.

Early 6.0-pre did incorrect reference counting, but also older sessions
had this issue. Perhaps due to ambiguities of matching playlists
by name in 5.x or session-format changes 3.x .. 5.x.

5 years agoAdd some more playlist Lua bindings
Robin Gareus [Tue, 19 Mar 2019 20:50:43 +0000 (21:50 +0100)]
Add some more playlist Lua bindings

5 years agoAdd an exception handler for access_action() used by control surfaces and Lua.
Ben Loftis [Tue, 19 Mar 2019 16:52:19 +0000 (11:52 -0500)]
Add an exception handler for access_action() used by control surfaces and Lua.

5 years agoCompiler fix for 201110.
Ben Loftis [Tue, 19 Mar 2019 16:23:45 +0000 (11:23 -0500)]
Compiler fix for 201110.

5 years agoMixer/show-editor is now Common/show-editor
Ben Loftis [Tue, 19 Mar 2019 15:42:05 +0000 (10:42 -0500)]
Mixer/show-editor is now Common/show-editor

5 years agouse a new unhandled (thus far) exception rather than ::abort() when an action is...
Paul Davis [Tue, 19 Mar 2019 15:29:30 +0000 (08:29 -0700)]
use a new unhandled (thus far) exception rather than ::abort() when an action is undefined

5 years agoreorder #include directives
Paul Davis [Mon, 18 Mar 2019 19:11:10 +0000 (12:11 -0700)]
reorder #include directives

5 years agoAdd example script to list Playlists
Robin Gareus [Tue, 19 Mar 2019 04:32:12 +0000 (05:32 +0100)]
Add example script to list Playlists

5 years agoAdd Lua bindings for SessionPlaylists
Robin Gareus [Tue, 19 Mar 2019 04:14:54 +0000 (05:14 +0100)]
Add Lua bindings for SessionPlaylists

5 years agoAdd convenience methods (mainly for scripting)
Robin Gareus [Tue, 19 Mar 2019 04:27:17 +0000 (05:27 +0100)]
Add convenience methods (mainly for scripting)

5 years agoUpdate GUI, use Session::playlists() getter (2/2)
Robin Gareus [Tue, 19 Mar 2019 04:14:40 +0000 (05:14 +0100)]
Update GUI, use Session::playlists() getter (2/2)

5 years agoRemove global Session::playlists variable, use getter method (1/2)
Robin Gareus [Tue, 19 Mar 2019 04:14:00 +0000 (05:14 +0100)]
Remove global Session::playlists variable, use getter method (1/2)

Global variables that can written by anyone are to be avoided.
This also simplifies exposing SessionPlaylists as Lua bindings.

5 years agoFix Playlist refcount when deleting track
Robin Gareus [Tue, 19 Mar 2019 02:02:30 +0000 (03:02 +0100)]
Fix Playlist refcount when deleting track

Both Disk-reader and Disk-writer use the same playlist.
ARDOUR::Track::use_playlist() sets it for both Disk-IO processors,
so it needs to be released by both on destruction.

5 years agoswitch remaining use of Common/ToggleMixerList to Mixer/ToggleMixerList
Paul Davis [Mon, 18 Mar 2019 17:58:02 +0000 (10:58 -0700)]
switch remaining use of Common/ToggleMixerList to Mixer/ToggleMixerList

5 years agocompute correct size for working buffers used by compound regions during disk refills
Paul Davis [Mon, 18 Mar 2019 14:33:58 +0000 (07:33 -0700)]
compute correct size for working buffers used by compound regions during disk refills

5 years agomake PlaybackBuffer<T>'s power-of-two size computation available to others
Paul Davis [Mon, 18 Mar 2019 14:32:56 +0000 (07:32 -0700)]
make PlaybackBuffer<T>'s power-of-two size computation available to others

5 years agoNO-OP: Use API to set/test state-of-the-state
Robin Gareus [Mon, 18 Mar 2019 14:33:05 +0000 (15:33 +0100)]
NO-OP: Use API to set/test state-of-the-state

5 years agoremove debug output
Paul Davis [Mon, 18 Mar 2019 05:19:12 +0000 (22:19 -0700)]
remove debug output

5 years agoAvoid calling rt-methods from non-rt context
Robin Gareus [Mon, 18 Mar 2019 05:15:12 +0000 (06:15 +0100)]
Avoid calling rt-methods from non-rt context

Since upcoming state-machine transitions are done in rt-context
via ARDOUR::Session::process_event () they should all in rt-context.

set_session() is called from the UI thread (and the process-lock wasn't
even taken)

5 years agoTemporary change to make auto-return work with broken transport-logic
Robin Gareus [Sun, 17 Mar 2019 17:38:07 +0000 (18:38 +0100)]
Temporary change to make auto-return work with broken transport-logic

Revert this once transport state machine waits for de-click!

This causes audible-clicks on stop, but prevents audible artifacts
on LocateRoll with the current transport-control-logic.

5 years agoSpeed up session deletion
Robin Gareus [Sun, 17 Mar 2019 16:35:10 +0000 (17:35 +0100)]
Speed up session deletion

No need to reconfigure routes due to removal of monitor or aux
send/return. The processors will be removed with the route.

5 years agoRemove unneeded calls to configure_processors during session-load
Robin Gareus [Sun, 17 Mar 2019 16:32:06 +0000 (17:32 +0100)]
Remove unneeded calls to configure_processors during session-load

Those are superseded by b890cf73ad, which is done after
all IOChanges have been processed.

5 years agoPrepare to configure procs only once - fix missing panners
Robin Gareus [Sun, 17 Mar 2019 16:19:02 +0000 (17:19 +0100)]
Prepare to configure procs only once - fix missing panners

During session load, all earlier configure_processors() calls
were useless and not taking I/O into account! The Delivery ::pan_out()
needs _output I/O ports in order to correctly report the correct
port-count!

This worked in earlier versions because Config->map_parameters()
triggered [two] processor re-configs via ::listen_position_changed().
That behavior was changed in 1af123465c290664

5 years agoNO-OP: prefer to use API to check session-state
Robin Gareus [Sun, 17 Mar 2019 16:04:45 +0000 (17:04 +0100)]
NO-OP: prefer to use API to check session-state

5 years agoAmend 883ee9c2, setup required invisible processor
Robin Gareus [Fri, 15 Mar 2019 14:54:07 +0000 (15:54 +0100)]
Amend 883ee9c2, setup required invisible processor

This fixes a potential silent master-bus when re-loading a session
("mains_out" may be skipped).

5 years agoAllow to load presets via double-click
Robin Gareus [Fri, 15 Mar 2019 14:29:36 +0000 (15:29 +0100)]
Allow to load presets via double-click

5 years agoAdd example script to save instrument plugins on save
Robin Gareus [Fri, 15 Mar 2019 00:38:49 +0000 (01:38 +0100)]
Add example script to save instrument plugins on save

5 years agoOn selection, move/scroll VCA into view
Robin Gareus [Thu, 14 Mar 2019 00:29:10 +0000 (01:29 +0100)]
On selection, move/scroll VCA into view

5 years agoUnused skeleton of the transport state-machine
Robin Gareus [Thu, 14 Mar 2019 00:11:10 +0000 (01:11 +0100)]
Unused skeleton of the transport state-machine

Simple test/example code. Eventually this is to replace
Session::process_event() and Session::realtime_*() methods
are to become transition actions.

5 years agoNO-OP: re-order code, collect realtime transport actions
Robin Gareus [Wed, 13 Mar 2019 15:26:17 +0000 (16:26 +0100)]
NO-OP: re-order code, collect realtime transport actions

5 years agoAnother fix for region-equivalency pref.
Ben Loftis [Tue, 12 Mar 2019 17:28:39 +0000 (12:28 -0500)]
Another fix for region-equivalency pref.

5 years agoChange region-equivalence enum to accommodate new mode.
Ben Loftis [Tue, 12 Mar 2019 17:21:25 +0000 (12:21 -0500)]
Change region-equivalence enum to accommodate new mode.

5 years agoSnap to VCA strips in the mixer when scrolling
Robin Gareus [Tue, 12 Mar 2019 16:04:13 +0000 (17:04 +0100)]
Snap to VCA strips in the mixer when scrolling

5 years agoFix marker context-menu (bug missed in 12a415f07)
Robin Gareus [Tue, 12 Mar 2019 14:45:32 +0000 (15:45 +0100)]
Fix marker context-menu (bug missed in 12a415f07)

5 years agoAdd Preference dialog option for LayerTime
Robin Gareus [Tue, 12 Mar 2019 14:18:16 +0000 (15:18 +0100)]
Add Preference dialog option for LayerTime

5 years agoChange default RE to use Layer+Time
Robin Gareus [Tue, 12 Mar 2019 14:17:41 +0000 (15:17 +0100)]
Change default RE to use Layer+Time

5 years agoAdd a time+layer equivalence check
Robin Gareus [Tue, 12 Mar 2019 14:15:44 +0000 (15:15 +0100)]
Add a time+layer equivalence check

This is more useful than exact_equivalent() since _start offset
may not match in some cases (compounds, import, record with different
capture latencies).

However shared group editing (range, copy/paste) does result in
consistent layers and matching position+length.

5 years agoAdd/remove source(s) in our MSVC project (gtk2_ardour)
John Emmas [Mon, 11 Mar 2019 10:25:29 +0000 (10:25 +0000)]
Add/remove source(s) in our MSVC project (gtk2_ardour)

5 years agoUpdate french translation
Julien "_FrnchFrgg_" RIVAUD [Mon, 11 Mar 2019 10:08:28 +0000 (11:08 +0100)]
Update french translation

Fix some mistakes (mostly mixes between nouns and verbs) and tweak some
translations. Also reuse existing translations in some places because
they were better.

5 years agoUpdate from POT, no content change
Julien "_FrnchFrgg_" RIVAUD [Mon, 11 Mar 2019 09:26:19 +0000 (10:26 +0100)]
Update from POT, no content change

5 years agoRemove redundant call, fix VST bypass indicator
Robin Gareus [Mon, 11 Mar 2019 03:18:35 +0000 (04:18 +0100)]
Remove redundant call, fix VST bypass indicator

PlugUIBase c'tor already sets the correct value, using
PluginInsert::enabled. That also correctly shows bypass state of VSTs
that support effSetBypass

5 years agoUse VST's print_parameter() when applicable.
Robin Gareus [Mon, 11 Mar 2019 01:56:08 +0000 (02:56 +0100)]
Use VST's print_parameter() when applicable.

5 years agoRemove generic parameter-printer
Robin Gareus [Mon, 11 Mar 2019 01:10:50 +0000 (02:10 +0100)]
Remove generic parameter-printer

This has been superseded by value_as_string() along with meta-data
from parameter-descriptor, which is supported by all standards, except VST.

5 years agoRemove cruft, unused variable
Robin Gareus [Mon, 11 Mar 2019 00:49:43 +0000 (01:49 +0100)]
Remove cruft, unused variable

5 years agoRemove unused value parameter printers
Robin Gareus [Mon, 11 Mar 2019 00:48:40 +0000 (01:48 +0100)]
Remove unused value parameter printers

5 years agoFixes 2 mistakes in the German translation file
Olivier Humbert [Fri, 8 Mar 2019 17:15:39 +0000 (18:15 +0100)]
Fixes 2 mistakes in the German translation file

5 years agoFrench and German fixes
Olivier Humbert [Fri, 8 Mar 2019 17:00:46 +0000 (18:00 +0100)]
French and German fixes

5 years agoWork-around crash when printing bindings
Robin Gareus [Sat, 9 Mar 2019 20:58:45 +0000 (21:58 +0100)]
Work-around crash when printing bindings

(ardour -b or Keyboard-Shortcuts > Print Bindings)
see also https://github.com/Ardour/ardour/pull/447

5 years agodo not save MIDI port info unnecessarily
Paul Davis [Sat, 9 Mar 2019 00:51:00 +0000 (17:51 -0700)]
do not save MIDI port info unnecessarily

5 years agoon engine (re)start, just mark MIDI port info dirty
Paul Davis [Sat, 9 Mar 2019 00:50:32 +0000 (17:50 -0700)]
on engine (re)start, just mark MIDI port info dirty

5 years agoadd runtime warning message
Paul Davis [Sat, 9 Mar 2019 00:08:29 +0000 (17:08 -0700)]
add runtime warning message

5 years agoavoid crazy levels of work when MIDI Port Info preferences panel is not visible
Paul Davis [Sat, 9 Mar 2019 00:04:43 +0000 (17:04 -0700)]
avoid crazy levels of work when MIDI Port Info preferences panel is not visible

5 years agodrop silly canonical name stuff from MIDI port info, and just store backend name...
Paul Davis [Fri, 8 Mar 2019 19:10:32 +0000 (12:10 -0700)]
drop silly canonical name stuff from MIDI port info, and just store backend name (GUI version)

5 years agodrop silly canonical name stuff from MIDI port info, and just store backend name...
Paul Davis [Fri, 8 Mar 2019 19:10:22 +0000 (12:10 -0700)]
drop silly canonical name stuff from MIDI port info, and just store backend name (libs version

5 years agorework name/canonical-name stuff for MIDI port info (GUI edition)
Paul Davis [Fri, 8 Mar 2019 04:58:04 +0000 (21:58 -0700)]
rework name/canonical-name stuff for MIDI port info (GUI edition)

5 years agorework name/canonical-name stuff for MIDI port info
Paul Davis [Fri, 8 Mar 2019 04:57:53 +0000 (21:57 -0700)]
rework name/canonical-name stuff for MIDI port info

5 years agoFrench translation update
Olivier Humbert [Fri, 8 Mar 2019 01:43:34 +0000 (02:43 +0100)]
French translation update

5 years agoReduce #includes - avoid ardour_ui.h
Robin Gareus [Fri, 8 Mar 2019 00:53:55 +0000 (01:53 +0100)]
Reduce #includes - avoid ardour_ui.h

5 years agoFix some more Gtk::Menu memory leaks
Robin Gareus [Fri, 8 Mar 2019 00:44:30 +0000 (01:44 +0100)]
Fix some more Gtk::Menu memory leaks

5 years agoPass stderr mode properly to vfork wrapper
Robin Gareus [Thu, 7 Mar 2019 20:40:14 +0000 (21:40 +0100)]
Pass stderr mode properly to vfork wrapper

5 years agoFix mp3 export
Robin Gareus [Thu, 7 Mar 2019 20:39:51 +0000 (21:39 +0100)]
Fix mp3 export

For reasons yet to be investigated, closing stderr when using a
pipe into ffmpeg results in ffmpeg's stderr being written
verbatim in the output file.

5 years agoRequest for comment: Bug or feature?
Robin Gareus [Thu, 7 Mar 2019 16:00:47 +0000 (17:00 +0100)]
Request for comment: Bug or feature?

5 years agoFix some Gtk::Menu memory leaks
Robin Gareus [Thu, 7 Mar 2019 16:02:12 +0000 (17:02 +0100)]
Fix some Gtk::Menu memory leaks

A Gtk::manage()d widget will be deleted when its parent container
is destroyed. Top-level context menus are not inside a container and
hence need to be manually deallocated.

The solution here is to use a shared Gtk::Menu pointer that is
centrally de/re-allocated.

This works because the GUI is single-threaded and at most one
context menu is visible at a time.

5 years agoCleanup Editor/Marker context-menu
Robin Gareus [Thu, 7 Mar 2019 20:24:15 +0000 (21:24 +0100)]
Cleanup Editor/Marker context-menu

This could have caused crashes previously:
::build_range_marker_menu() may have created range_marker_menu
while the GUI wanted transport_marker_menu.

5 years agoPrefer using RAII to suspend signals
Robin Gareus [Thu, 7 Mar 2019 15:42:04 +0000 (16:42 +0100)]
Prefer using RAII to suspend signals

5 years agoFix some Gtk::Menu related memory leaks
Robin Gareus [Thu, 7 Mar 2019 15:40:16 +0000 (16:40 +0100)]
Fix some Gtk::Menu related memory leaks

A Gtk::manage()d widget will be deleted when its parent container
is destroyed. Top-level context menus are not inside a container and
hence need to be manually deallocated.

This adds explicit delete calls for menus where there is a
member variable reference to the Menu.

5 years agoRemove cruft: unused members
Robin Gareus [Thu, 7 Mar 2019 15:07:02 +0000 (16:07 +0100)]
Remove cruft: unused members

5 years agoRemove unused region_edit_menu & edit-point action
Robin Gareus [Thu, 7 Mar 2019 15:04:05 +0000 (16:04 +0100)]
Remove unused region_edit_menu & edit-point action

5 years agosave/restore MIDI port pretty names, but prefer backend pretty name if available
Paul Davis [Thu, 7 Mar 2019 20:30:54 +0000 (13:30 -0700)]
save/restore MIDI port pretty names, but prefer backend pretty name if available

5 years agoselection must be enabled to allow editable columns :((
Paul Davis [Thu, 7 Mar 2019 20:30:24 +0000 (13:30 -0700)]
selection must be enabled to allow editable columns :((

5 years agoredesign naming and reload of MIDI port information (GUI edition)
Paul Davis [Thu, 7 Mar 2019 19:01:03 +0000 (12:01 -0700)]
redesign naming and reload of MIDI port information (GUI edition)

5 years agoredesign naming and reload of MIDI port information (library edition)
Paul Davis [Thu, 7 Mar 2019 19:00:51 +0000 (12:00 -0700)]
redesign naming and reload of MIDI port information (library edition)

5 years agoa more nuanced version of the "do-not-automatically-disconnect-selection-follows...
Paul Davis [Thu, 7 Mar 2019 02:46:51 +0000 (19:46 -0700)]
a more nuanced version of the "do-not-automatically-disconnect-selection-follows-input

5 years agoFix thinko: if the entered_regionview is already part of the selection, do not treat...
Ben Loftis [Thu, 7 Mar 2019 15:50:00 +0000 (09:50 -0600)]
Fix thinko:  if the entered_regionview is already part of the selection, do not treat it as a special case when splitting.

5 years agoRemove unused fluidsynth setting (since fluidsynth 2.0)
Robin Gareus [Wed, 6 Mar 2019 22:50:07 +0000 (23:50 +0100)]
Remove unused fluidsynth setting (since fluidsynth 2.0)

5 years agoUse unique midi-port names for Ardour's Dummy backend
Robin Gareus [Wed, 6 Mar 2019 22:48:07 +0000 (23:48 +0100)]
Use unique midi-port names for Ardour's Dummy backend

5 years agoArdour/ALSA allow multiple MIDI devices with the same name
Robin Gareus [Wed, 6 Mar 2019 22:41:15 +0000 (23:41 +0100)]
Ardour/ALSA allow multiple MIDI devices with the same name

5 years agoRetain generated plugin menu
Robin Gareus [Wed, 6 Mar 2019 20:21:29 +0000 (21:21 +0100)]
Retain generated plugin menu

Fixes occasional crash when Menu is re-used.
PluginSelector::plugin_menu() is called every time the processor box
shows the context-menu. The provided menu needs to remain valid
regardless of usage.

5 years agoAdd missing newline on error message
Robin Gareus [Wed, 6 Mar 2019 16:09:29 +0000 (17:09 +0100)]
Add missing newline on error message

5 years agoFix typo
Robin Gareus [Wed, 6 Mar 2019 16:09:12 +0000 (17:09 +0100)]
Fix typo

5 years agoLCXL:Disable global mute/solo/recarm in device mode
Jan Lentfer [Wed, 6 Mar 2019 08:12:08 +0000 (09:12 +0100)]
LCXL:Disable global mute/solo/recarm in device mode

5 years agoTweak session load
Robin Gareus [Wed, 6 Mar 2019 00:01:03 +0000 (01:01 +0100)]
Tweak session load

Listen positions are already correctly set when the route state
is restored. The Route directly uses the Config.

This skips duplicate calls to re-configure all processors on all Routes
during RCConfiguration::map_parameters() on session-load, twice
(pfl-position, listen-position)

5 years agoAllow to call set_state() on existing routes
Robin Gareus [Tue, 5 Mar 2019 23:57:49 +0000 (00:57 +0100)]
Allow to call set_state() on existing routes

Delaylines are not saved in the XML and internal-return is an
invisible processor not explicitly re-added when the state is restored.

They are [re]inserted during Route::setup_invisible_processors().
So this method need to be called after restoring processor state
(indirectly via configure_processors_unlocked as needed).

PS. During route creation this call happens explicitly and on session load
hookup_io() -> Route::output_change_handler() implicitly sets this up.