Caused by thinko when merging/replacing two conditional clauses in the
string-convert changes which resulted in bindings not being restored and
regeneration of id's in XML.
ControlProtocolManager::set_state() already takes the protocols_lock.
However effectively this is a NO-OP. During ::set_state no CPI should
be instantiated and ControlProtocolManager::teardown() returns early.
Arodur itself on longer depends on C/C++ locale for saving/loading sessions.
However, the Localeguard is kept for 3rd party plugins: Reset the C locale
to "C" to enforce consisten numerics and portable sessions as well
as verify that no plugin changes the C++ locale.
Ardour translations and GUI string formatting only depends on the C locale.
Modifying the C++ locale may produce erratic results on various systems
(in particular OSX and macOS) and cause incompatibilies with plugins.
GTK events are still handled while un/loading a session (e.g display
"Loading" message or showing the splash triggers an event-loop run).
Global canvas elements (e.g. Rulers) may respond to session-specific
actions.
Since 5.8-245-g3e43585fa, a response hides the dialog Window
in ArdourDialog::on_response (to prevent dialogs windows staying
around unresponsively while Ardour does background work).
This logic does not apply to Dialog Windows which implement
ProgressReporter or support dialog responses other than OK, Close.
The monitor section connection is implicit and done by default.
This fixes an issue with the auditioner connections being lost when
switching between sessions that use/don't use the monitor-section.
Previously:
1) load session with monitor section, save session
-> global config explicitly saved
"auditioner-output-left" -> "ardour:Monitor/audio_in 1"
2) Load a session w/o monitor-section. The config is parsed,
"ardour:Monitor/audio_in" port does not exist, connection was lost.