From c3847269c296c5e09002d5dc7fb0335ac84b4667 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 3 Oct 2014 15:32:12 +0200 Subject: [PATCH] fix crash when changing the Audio System When the i/o channel spinbox widgets are realized, they call print_channel_count(). A "0" is formatted as "all available channels". This causes the GTK::Entry inside the spinbox to emit a "changed" signal which in turn triggers a parameter_changed(), [..], store_state(), which calls into the spinbox again while it is being realized, which makes gtkmm barf. Start Ardour with JACK running (autoconnect to jack), Window -> Audio/Midi settings -> initial no_control_notebook. Change Audio System -> [control widgets are realized] -> glibmm std::exception --- gtk2_ardour/engine_dialog.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 3e17cc2c85..f3dba387ab 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -373,7 +373,10 @@ EngineControl::build_notebook () basic_vbox.pack_start (*hpacker); } - basic_vbox.show_all (); + { + PBD::Unwinder protect_ignore_changes (ignore_changes, ignore_changes + 1); + basic_vbox.show_all (); + } } void