diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-05-29 12:32:14 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-05-29 12:32:14 +0000 |
commit | 79ab09083010806d9dec1650088069c422acd30f (patch) | |
tree | 5f32481f8f58c569a01539e2e36ec8eb075c8ff2 /gtk2_ardour/redirect_box.cc | |
parent | b7f48adb562e7e5a6ba88882f7d97110790aa8b1 (diff) |
redesign plugin selection process to fix multiple-addition problem
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3420 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/redirect_box.cc')
-rw-r--r-- | gtk2_ardour/redirect_box.cc | 37 |
1 files changed, 8 insertions, 29 deletions
diff --git a/gtk2_ardour/redirect_box.cc b/gtk2_ardour/redirect_box.cc index c2ffaf0e0c..e99d74e2f0 100644 --- a/gtk2_ardour/redirect_box.cc +++ b/gtk2_ardour/redirect_box.cc @@ -147,10 +147,6 @@ RedirectBox::RedirectBox (Placement pcmnt, Session& sess, boost::shared_ptr<Rout redirect_display.signal_button_press_event().connect (mem_fun(*this, &RedirectBox::redirect_button_press_event), false); redirect_display.signal_button_release_event().connect (mem_fun(*this, &RedirectBox::redirect_button_release_event)); - using_plugin_selector = false; - _plugin_selector.signal_hide().connect (mem_fun (*this, &RedirectBox::plugin_selector_hidden)); - _plugin_selector.signal_show().connect (mem_fun (*this, &RedirectBox::plugin_selector_shown)); - /* start off as a passthru strip. we'll correct this, if necessary, in update_diskstream_display(). */ @@ -395,33 +391,28 @@ RedirectBox::deselect_all_redirects () void RedirectBox::choose_plugin () { - newplug_connection = _plugin_selector.PluginCreated.connect (mem_fun(*this,&RedirectBox::insert_plugin_chosen)); - // Gtk::Menu& m = _plugin_selector.plugin_menu(); - // m.popup (1, 0); + _plugin_selector.set_interested_object (*this); } void -RedirectBox::insert_plugin_chosen (boost::shared_ptr<Plugin> plugin) +RedirectBox::use_plugins (const SelectedPlugins& plugins) { - if (plugin) { + for (SelectedPlugins::const_iterator p = plugins.begin(); p != plugins.end(); ++p) { - boost::shared_ptr<Redirect> redirect (new PluginInsert (_session, plugin, _placement)); - - uint32_t err_streams; + boost::shared_ptr<Redirect> redirect (new PluginInsert (_session, *p, _placement)); + uint32_t err_streams; + if (_route->add_redirect (redirect, this, &err_streams)) { - weird_plugin_dialog (*plugin, err_streams, _route); + weird_plugin_dialog (**p, err_streams, _route); } else { + if (Profile->get_sae()) { redirect->set_active (true, 0); } redirect->active_changed.connect (bind (mem_fun (*this, &RedirectBox::show_redirect_active_r), boost::weak_ptr<Redirect>(redirect))); } } - - if (!using_plugin_selector) { - newplug_connection.disconnect(); - } } void @@ -1413,15 +1404,3 @@ RedirectBox::generate_redirect_title (boost::shared_ptr<PluginInsert> pi) return string_compose(_("%1: %2 (by %3)"), _route->name(), pi->name(), maker); } -void -RedirectBox::plugin_selector_hidden () -{ - newplug_connection.disconnect(); - using_plugin_selector = false; -} - -void -RedirectBox::plugin_selector_shown () -{ - using_plugin_selector = true; -} |