summaryrefslogtreecommitdiff
path: root/gtk2_ardour/plugin_ui.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2018-05-17 22:14:08 +0200
committerRobin Gareus <robin@gareus.org>2018-05-17 22:15:07 +0200
commit7e78d1c786d253c8456a24d4d7ffc35ad302edbf (patch)
treec8e48d572053295cae3920574425e6401c8701cd /gtk2_ardour/plugin_ui.cc
parentcb51c4c5aa1717d1e37f370b3610e4f8f7b1e0bf (diff)
Display profile-data in generic plugin-UI.
Diffstat (limited to 'gtk2_ardour/plugin_ui.cc')
-rw-r--r--gtk2_ardour/plugin_ui.cc52
1 files changed, 52 insertions, 0 deletions
diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc
index a91a0b8197..96dcdc1615 100644
--- a/gtk2_ardour/plugin_ui.cc
+++ b/gtk2_ardour/plugin_ui.cc
@@ -71,6 +71,7 @@
#include "keyboard.h"
#include "latency_gui.h"
#include "plugin_eq_gui.h"
+#include "timers.h"
#include "new_plugin_preset_dialog.h"
#include "pbd/i18n.h"
@@ -460,6 +461,7 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
, pin_management_button (_("Pinout"))
, description_expander (_("Description"))
, plugin_analysis_expander (_("Plugin analysis"))
+ , cpuload_expander (_("CPU Profile"))
, latency_gui (0)
, latency_dialog (0)
, eqgui (0)
@@ -520,6 +522,9 @@ PlugUIBase::PlugUIBase (boost::shared_ptr<PluginInsert> pi)
plugin_analysis_expander.property_expanded().signal_changed().connect( sigc::mem_fun(*this, &PlugUIBase::toggle_plugin_analysis));
plugin_analysis_expander.set_expanded(false);
+ cpuload_expander.property_expanded().signal_changed().connect( sigc::mem_fun(*this, &PlugUIBase::toggle_cpuload_display));
+ cpuload_expander.set_expanded(false);
+
insert->DropReferences.connect (death_connection, invalidator (*this), boost::bind (&PlugUIBase::plugin_going_away, this), gui_context());
plugin->PresetAdded.connect (*this, invalidator (*this), boost::bind (&PlugUIBase::preset_added_or_removed, this), gui_context ());
@@ -814,6 +819,53 @@ PlugUIBase::toggle_plugin_analysis()
}
void
+PlugUIBase::update_cpu_label()
+{
+ uint64_t min, max;
+ double avg, dev;
+ string t;
+ if (insert->get_stats (min, max, avg, dev)) {
+ t = string_compose (_("Timing min: %1 [ms] max: %2 [ms]\navg: %3 [ms] std.dev: %4"),
+ rint (min / 100.) / 10.,
+ rint (max / 100.) / 10.,
+ rint (avg) / 1000.,
+ rint (dev) / 1000.);
+ } else {
+ t = _("No data available");
+ }
+ cpuload_label.set_text (t);
+}
+
+void
+PlugUIBase::toggle_cpuload_display()
+{
+ if (cpuload_expander.get_expanded() && !cpuload_expander.get_child()) {
+ update_cpu_label ();
+ cpuload_label.set_line_wrap(true);
+ cpuload_label.set_line_wrap_mode(Pango::WRAP_WORD);
+ update_cpu_label_connection = Timers::second_connect (sigc::mem_fun(*this, &PlugUIBase::update_cpu_label));
+
+ cpuload_expander.add(cpuload_label);
+ cpuload_expander.show_all();
+ }
+
+ if (!cpuload_expander.get_expanded()) {
+ update_cpu_label_connection.disconnect ();
+ const int child_height = cpuload_expander.get_child ()->get_height ();
+ cpuload_expander.remove();
+ Gtk::Window *toplevel = (Gtk::Window*) cpuload_expander.get_ancestor (GTK_TYPE_WINDOW);
+
+ if (toplevel) {
+ Gtk::Requisition wr;
+ toplevel->get_size (wr.width, wr.height);
+ wr.height -= child_height;
+ toplevel->resize (wr.width, wr.height);
+ }
+ }
+
+}
+
+void
PlugUIBase::update_preset_list ()
{
using namespace Menu_Helpers;