List I/O Plugins in DSP-load window
This commit is contained in:
parent
a97e910b70
commit
d4c15aab3f
@ -20,8 +20,8 @@
|
||||
#include <gtkmm/label.h>
|
||||
#include <gtkmm/viewport.h>
|
||||
|
||||
#include "ardour/io_plug.h"
|
||||
#include "ardour/session.h"
|
||||
#include "ardour/plugin_insert.h"
|
||||
|
||||
#include "gtkmm2ext/gui_thread.h"
|
||||
|
||||
@ -110,6 +110,9 @@ PluginDSPLoadWindow::clear_all_stats ()
|
||||
for (RouteList::const_iterator i = routes.begin(); i != routes.end(); ++i) {
|
||||
(*i)->foreach_processor (sigc::mem_fun (*this, &PluginDSPLoadWindow::clear_processor_stats));
|
||||
}
|
||||
for (auto const& iop : *_session->io_plugs ()) {
|
||||
clear_pluginsert_stats (iop);
|
||||
}
|
||||
}
|
||||
|
||||
struct DSPLoadSorter
|
||||
@ -185,6 +188,14 @@ PluginDSPLoadWindow::refill_processors ()
|
||||
);
|
||||
}
|
||||
|
||||
_session->IOPluginsChanged.connect (
|
||||
_route_connections, invalidator (*this), boost::bind (&PluginDSPLoadWindow::refill_processors, this), gui_context()
|
||||
);
|
||||
|
||||
for (auto const& iop : *_session->io_plugs ()) {
|
||||
add_pluginsert_to_display (iop, iop->is_pre () ? _("I/O Pre") : _("I/O Post"));
|
||||
}
|
||||
|
||||
if (_box.get_children().size() == 0) {
|
||||
_box.add (*Gtk::manage (new Gtk::Label (_("No Plugins"))));
|
||||
_box.show_all ();
|
||||
@ -198,14 +209,22 @@ void
|
||||
PluginDSPLoadWindow::add_processor_to_display (boost::weak_ptr<Processor> w, std::string const& route_name)
|
||||
{
|
||||
boost::shared_ptr<Processor> p = w.lock ();
|
||||
boost::shared_ptr<PluginInsert> pi = boost::dynamic_pointer_cast<PluginInsert> (p);
|
||||
if (!pi || !pi->provides_stats ()) {
|
||||
boost::shared_ptr<PlugInsertBase> pib = boost::dynamic_pointer_cast<PlugInsertBase> (p);
|
||||
if (pib) {
|
||||
add_pluginsert_to_display (pib, route_name);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
PluginDSPLoadWindow::add_pluginsert_to_display (boost::shared_ptr<PlugInsertBase> p, std::string const& route_name)
|
||||
{
|
||||
if (!p->provides_stats ()) {
|
||||
return;
|
||||
}
|
||||
p->DropReferences.connect (_processor_connections, MISSING_INVALIDATOR, boost::bind (&PluginDSPLoadWindow::refill_processors, this), gui_context());
|
||||
PluginLoadStatsGui* plsg = new PluginLoadStatsGui (pi);
|
||||
|
||||
std::string name = route_name + " - " + pi->name();
|
||||
PluginLoadStatsGui* plsg = new PluginLoadStatsGui (p);
|
||||
|
||||
std::string name = route_name + " - " + p->plugin ()->name ();
|
||||
Gtk::Frame* frame = new Gtk::Frame (name.c_str());
|
||||
frame->add (*Gtk::manage (plsg));
|
||||
_box.pack_start (*frame, Gtk::PACK_SHRINK, 2);
|
||||
@ -218,8 +237,14 @@ void
|
||||
PluginDSPLoadWindow::clear_processor_stats (boost::weak_ptr<Processor> w)
|
||||
{
|
||||
boost::shared_ptr<Processor> p = w.lock ();
|
||||
boost::shared_ptr<PluginInsert> pi = boost::dynamic_pointer_cast<PluginInsert> (p);
|
||||
if (pi) {
|
||||
pi->clear_stats ();
|
||||
boost::shared_ptr<PlugInsertBase> pib = boost::dynamic_pointer_cast<PlugInsertBase> (p);
|
||||
if (pib) {
|
||||
clear_pluginsert_stats (pib);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
PluginDSPLoadWindow::clear_pluginsert_stats (boost::shared_ptr<PlugInsertBase> pib)
|
||||
{
|
||||
pib->clear_stats ();
|
||||
}
|
||||
|
@ -31,6 +31,7 @@
|
||||
|
||||
namespace ARDOUR {
|
||||
class Processor;
|
||||
class PlugInsertBase;
|
||||
}
|
||||
|
||||
class PluginLoadStatsGui;
|
||||
@ -55,7 +56,9 @@ private:
|
||||
void clear_all_stats ();
|
||||
void sort_by_stats (bool);
|
||||
void add_processor_to_display (boost::weak_ptr<ARDOUR::Processor>, std::string const&);
|
||||
void add_pluginsert_to_display (boost::shared_ptr<ARDOUR::PlugInsertBase>, std::string const&);
|
||||
void clear_processor_stats (boost::weak_ptr<ARDOUR::Processor>);
|
||||
void clear_pluginsert_stats (boost::shared_ptr<ARDOUR::PlugInsertBase>);
|
||||
|
||||
Gtk::ScrolledWindow _scroller;
|
||||
Gtk::VBox _box;
|
||||
|
Loading…
Reference in New Issue
Block a user