summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-10-03 15:32:12 +0200
committerRobin Gareus <robin@gareus.org>2014-10-03 15:32:12 +0200
commitc3847269c296c5e09002d5dc7fb0335ac84b4667 (patch)
treeb7d3a241f4a38fbaa28bdc8ce2f821f5806e7729
parent5e61c8ab12a0e7da5261c0c27a2e8bb236425f5b (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.cc5
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