fix crash when changing the Audio System
authorRobin Gareus <robin@gareus.org>
Fri, 3 Oct 2014 13:32:12 +0000 (15:32 +0200)
committerRobin Gareus <robin@gareus.org>
Fri, 3 Oct 2014 13:32:12 +0000 (15:32 +0200)
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

index 3e17cc2c8577c6889179f19b7bf539b099ad2869..f3dba387abbb5109e035decff1738eaf17bc5841 100644 (file)
@@ -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