Add API to reset plugin timing stats

This commit is contained in:
Robin Gareus 2018-08-15 12:46:11 +02:00
parent 61d26e5678
commit 95eaf0cc87
2 changed files with 13 additions and 0 deletions

View file

@ -197,6 +197,7 @@ public:
bool load_preset (Plugin::PresetRecord);
bool get_stats (uint64_t& min, uint64_t& max, double& avg, double& dev) const;
void clear_stats ();
/** A control that manipulates a plugin parameter (control port). */
struct PluginControl : public AutomationControl
@ -399,6 +400,7 @@ private:
void preset_load_set_value (uint32_t, float);
PBD::TimingStats _timing_stats;
volatile gint _stat_reset;
};
} // namespace ARDOUR

View file

@ -83,6 +83,7 @@ PluginInsert::PluginInsert (Session& s, boost::shared_ptr<Plugin> plug)
, _maps_from_state (false)
, _latency_changed (false)
, _bypass_port (UINT32_MAX)
, _stat_reset (0)
{
/* the first is the master */
@ -1210,6 +1211,10 @@ PluginInsert::run (BufferSet& bufs, samplepos_t start_sample, samplepos_t end_sa
_sidechain->run (bufs, start_sample, end_sample, speed, nframes, true);
}
if (g_atomic_int_compare_and_exchange (&_stat_reset, 1, 0)) {
_timing_stats.reset ();
}
if (_pending_active) {
_timing_stats.start ();
/* run as normal if we are active or moving from inactive to active */
@ -3146,6 +3151,12 @@ PluginInsert::get_stats (uint64_t& min, uint64_t& max, double& avg, double& dev)
return _timing_stats.get_stats (min, max, avg, dev);
}
void
PluginInsert::clear_stats ()
{
g_atomic_int_set (&_stat_reset, 1);
}
std::ostream& operator<<(std::ostream& o, const ARDOUR::PluginInsert::Match& m)
{
switch (m.method) {