diff options
author | Robin Gareus <robin@gareus.org> | 2013-04-15 15:50:08 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-04-15 15:50:08 +0200 |
commit | e17f75b351356279778e4ea4adbb6c0d544ba755 (patch) | |
tree | 5834beaa16a462cd07724545afbd9a78b2d21f61 | |
parent | 66ee2c8e597ca9a07d614cf56b4002e5303e3645 (diff) |
option to ignore feedback detection - /i know what i'm doing/ mode.
This currently only has effect if the loop connection is
made/unmade while the option was set/unset.
Toggling the option itself won't trigger a graph re-order
-rw-r--r-- | gtk2_ardour/rc_option_editor.cc | 8 | ||||
-rw-r--r-- | libs/ardour/ardour/rc_configuration_vars.h | 1 | ||||
-rw-r--r-- | libs/ardour/session.cc | 5 |
3 files changed, 12 insertions, 2 deletions
diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 676ebf8332..bbb0a277fa 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -1512,6 +1512,14 @@ RCOptionEditor::RCOptionEditor () add_option (_("Audio"), oac); + add_option (_("Audio"), + new BoolOption ( + "ignore-feedback-loops", + _("Ignore Feedback Loops"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_ignore_feedback_loops), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_ignore_feedback_loops) + )); + add_option (_("Audio"), new OptionEditorHeading (_("Denormals"))); add_option (_("Audio"), diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index f19f8fe808..5b094afefc 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -192,6 +192,7 @@ CONFIG_VARIABLE (bool, sound_midi_notes, "sound-midi-notes", false) CONFIG_VARIABLE (bool, use_plugin_own_gui, "use-plugin-own-gui", true) CONFIG_VARIABLE (uint32_t, max_recent_sessions, "max-recent-sessions", 10) CONFIG_VARIABLE (double, automation_thinning_factor, "automation-thinning-factor", 20.0) +CONFIG_VARIABLE (bool, ignore_feedback_loops, "ignore-feedback-loops", false) /* denormal management */ diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 6fe51961d2..394fa73079 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -1522,7 +1522,7 @@ Session::resort_routes_using (boost::shared_ptr<RouteList> r) /* Attempt a topological sort of the route graph */ boost::shared_ptr<RouteList> sorted_routes = topological_sort (r, edges); - if (sorted_routes) { + if (Config->get_ignore_feedback_loops() || sorted_routes) { /* We got a satisfactory topological sort, so there is no feedback; use this new graph. @@ -1553,8 +1553,9 @@ Session::resort_routes_using (boost::shared_ptr<RouteList> r) #endif SuccessfulGraphSort (); /* EMIT SIGNAL */ + } - } else { + if (!sorted_routes) { /* The topological sort failed, so we have a problem. Tell everyone and stick to the old graph; this will continue to be processed, so until the feedback is fixed, what is played back will not quite |