diff options
author | Robin Gareus <robin@gareus.org> | 2014-10-03 15:32:12 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-10-03 15:32:12 +0200 |
commit | c3847269c296c5e09002d5dc7fb0335ac84b4667 (patch) | |
tree | b7d3a241f4a38fbaa28bdc8ce2f821f5806e7729 | |
parent | 5e61c8ab12a0e7da5261c0c27a2e8bb236425f5b (diff) |
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
-rw-r--r-- | gtk2_ardour/engine_dialog.cc | 5 |
1 files changed, 4 insertions, 1 deletions
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<uint32_t> protect_ignore_changes (ignore_changes, ignore_changes + 1); + basic_vbox.show_all (); + } } void |