summaryrefslogtreecommitdiff
path: root/gtk2_ardour/mixer_ui.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-10-22 17:17:34 +0000
committerDavid Robillard <d@drobilla.net>2009-10-22 17:17:34 +0000
commit155338d168b362dd135597695aaa1e419831a277 (patch)
treec2f97ff4b99366b72418765cb4a69ccbd4c45065 /gtk2_ardour/mixer_ui.cc
parent525da3281674a92ff00150098ef1be7a403555dd (diff)
Defer plugin discovery until actually needed (significant startup time improvement, especially with LV2).
git-svn-id: svn://localhost/ardour2/branches/3.0@5859 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/mixer_ui.cc')
-rw-r--r--gtk2_ardour/mixer_ui.cc21
1 files changed, 15 insertions, 6 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index 51578ad2b4..9931d51ff0 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -62,6 +62,7 @@ using PBD::atoi;
Mixer_UI::Mixer_UI ()
: Window (Gtk::WINDOW_TOPLEVEL)
+ , _plugin_selector (0)
{
session = 0;
_strip_width = Config->get_default_narrow_ms() ? Narrow : Wide;
@@ -76,9 +77,9 @@ Mixer_UI::Mixer_UI ()
Route::SyncOrderKeys.connect (mem_fun (*this, &Mixer_UI::sync_order_keys));
- scroller_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
- scroller_base.set_name ("MixerWindow");
- scroller_base.signal_button_release_event().connect (mem_fun(*this, &Mixer_UI::strip_scroller_button_release));
+ scroller_base.add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
+ scroller_base.set_name ("MixerWindow");
+ scroller_base.signal_button_release_event().connect (mem_fun(*this, &Mixer_UI::strip_scroller_button_release));
// add as last item of strip packer
strip_packer.pack_end (scroller_base, true, true);
@@ -220,8 +221,6 @@ Mixer_UI::Mixer_UI ()
signal_delete_event().connect (mem_fun (*this, &Mixer_UI::hide_window));
add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK);
- _plugin_selector = new PluginSelector (PluginManager::the_manager());
-
signal_configure_event().connect (mem_fun (*ARDOUR_UI::instance(), &ARDOUR_UI::configure_handler));
_selection.RoutesChanged.connect (mem_fun(*this, &Mixer_UI::follow_strip_selection));
@@ -466,7 +465,8 @@ Mixer_UI::connect_to_session (Session* sess)
route_groups_changed ();
- _plugin_selector->set_session (session);
+ if (_plugin_selector)
+ _plugin_selector->set_session (session);
if (_visible) {
show_window();
@@ -1487,3 +1487,12 @@ Mixer_UI::set_route_group_activation (RouteGroup* g, bool a)
g->set_active (a, this);
}
+PluginSelector&
+Mixer_UI::plugin_selector()
+{
+ if (!_plugin_selector) {
+ _plugin_selector = new PluginSelector (PluginManager::the_manager());
+ _plugin_selector->set_session (session);
+ }
+ return *_plugin_selector;
+}