Use SignalBlocker class in EngineControl to block widget signal emission
authorTim Mayberry <mojofunk@gmail.com>
Mon, 10 Aug 2015 10:02:25 +0000 (20:02 +1000)
committerTim Mayberry <mojofunk@gmail.com>
Mon, 10 Aug 2015 23:24:52 +0000 (09:24 +1000)
This stops a whole lot of redundant signal emission and makes it much easier to
think about what is going on. It also makes the dialog present much faster.

gtk2_ardour/engine_dialog.cc

index 28e0adcdca97155c5bd2eca768a56c74d3d08842..e905899872b8a2d5175e994b687c129c07abea95 100644 (file)
@@ -824,8 +824,7 @@ EngineControl::refresh_midi_display (std::string focus)
 void
 EngineControl::backend_changed ()
 {
-       DEBUG_ECONTROL ("backend_changed");
-
+       SignalBlocker blocker (*this, "backend_changed");
        string backend_name = backend_combo.get_active_text();
        boost::shared_ptr<ARDOUR::AudioBackend> backend;
 
@@ -1156,7 +1155,7 @@ EngineControl::list_devices ()
 void
 EngineControl::driver_changed ()
 {
-       DEBUG_ECONTROL ("driver_changed");
+       SignalBlocker blocker (*this, "driver_changed");
        boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
        assert (backend);
 
@@ -1261,7 +1260,7 @@ EngineControl::set_buffersize_popdown_strings (const std::string& device_name)
 void
 EngineControl::device_changed ()
 {
-       DEBUG_ECONTROL ("device_changed");
+       SignalBlocker blocker (*this, "device_changed");
        boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
        assert (backend);