diff --git a/libs/ardour/ardour/triggerbox.h b/libs/ardour/ardour/triggerbox.h index ddf56345e0..c804d41e49 100644 --- a/libs/ardour/ardour/triggerbox.h +++ b/libs/ardour/ardour/triggerbox.h @@ -27,6 +27,7 @@ #include +#include "pbd/pcg_rand.h" #include "pbd/stateful.h" #include "pbd/ringbuffer.h" @@ -245,6 +246,8 @@ class LIBARDOUR_API TriggerBox : public Processor Glib::Threads::RWLock trigger_lock; /* protects all_triggers */ Triggers all_triggers; + PBD::PCGRand _pcg; + /* These three are accessed (read/write) only from process() context */ void drop_triggers (); diff --git a/libs/ardour/triggerbox.cc b/libs/ardour/triggerbox.cc index ea3c728453..1a6bc20b65 100644 --- a/libs/ardour/triggerbox.cc +++ b/libs/ardour/triggerbox.cc @@ -8,7 +8,6 @@ #include "pbd/basename.h" #include "pbd/compose.h" #include "pbd/failed_constructor.h" -#include "pbd/pcg_rand.h" #include "temporal/tempo.h" @@ -990,8 +989,7 @@ TriggerBox::set_next_trigger (size_t current) } int which_follow_action; - PCGRand pcg; - int r = pcg.rand (0, 101); + int r = _pcg.rand (0, 101); if (r <= all_triggers[current]->follow_action_probability()) { which_follow_action = 0; @@ -1079,7 +1077,7 @@ TriggerBox::set_next_trigger (size_t current) case Trigger::AnyTrigger: while (true) { - n = pcg.rand (0, all_triggers.size() + 1); + n = _pcg.rand (0, all_triggers.size() + 1); if (!all_triggers[n]->region()) { continue; } @@ -1093,7 +1091,7 @@ TriggerBox::set_next_trigger (size_t current) case Trigger::OtherTrigger: while (true) { - n = pcg.rand (0, all_triggers.size() + 1); + n = _pcg.rand (0, all_triggers.size() + 1); if ((size_t) n == current) { continue; }