diff options
author | Robin Gareus <robin@gareus.org> | 2018-09-25 17:46:58 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2018-09-25 18:01:22 +0200 |
commit | 144dda0581b963ac88c73127d7f60246bfb60625 (patch) | |
tree | 1a0349bbf769201d4dc59b80999f34238ff3bc82 /gtk2_ardour | |
parent | 7857083fc834937222204adad4a5088fbf63613c (diff) |
Fix/tweak various DSP-load window issues
* update when window is visible and session-changes
* drop connections to prevent multiple callbacks
* catch session-deletion, skip updates
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/plugin_dspload_window.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gtk2_ardour/plugin_dspload_window.cc b/gtk2_ardour/plugin_dspload_window.cc index e9b54380d2..9819c751b0 100644 --- a/gtk2_ardour/plugin_dspload_window.cc +++ b/gtk2_ardour/plugin_dspload_window.cc @@ -62,6 +62,8 @@ PluginDSPLoadWindow::set_session (Session* s) ArdourWindow::set_session (s); if (!s) { drop_references (); + } else if (is_visible ()) { + refill_processors (); } } @@ -107,12 +109,18 @@ PluginDSPLoadWindow::drop_references () delete *child; } } + _route_connections.drop_connections (); + _processor_connections.drop_connections (); } void PluginDSPLoadWindow::refill_processors () { drop_references (); + if (!_session || _session->deletion_in_progress()) { + /* may be called from session d'tor, removing monitor-section w/plugin */ + return; + } RouteList routes = _session->get_routelist (); for (RouteList::const_iterator i = routes.begin(); i != routes.end(); ++i) { |