Add API to reset plugin timing stats
[ardour.git] / libs / ardour / plugin_insert.cc
index 0ad1de02a9bb41ccc703dbd57630913af8da22a1..205262ab4c56e0edac9af322c2295b148b8484ba 100644 (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) {