From b51041ac485417ceb50e284da4aa8660961ee4fc Mon Sep 17 00:00:00 2001 From: Cameron Date: Sat, 18 Mar 2023 18:54:25 -0700 Subject: [PATCH] reinit random in case it was initialized on another thread --- src/override/Engine.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/override/Engine.cpp b/src/override/Engine.cpp index 64de4c6..2a9deeb 100644 --- a/src/override/Engine.cpp +++ b/src/override/Engine.cpp @@ -758,6 +758,8 @@ void Engine::addModule(Module* module) { DISTRHO_SAFE_ASSERT_RETURN(it == internal->modules.end(),); auto tit = std::find(internal->terminalModules.begin(), internal->terminalModules.end(), module); DISTRHO_SAFE_ASSERT_RETURN(tit == internal->terminalModules.end(),); + // Reinitialize random module since it uses thread-local RNG state + random::init(); // Set ID if unset or collides with an existing ID while (module->id < 0 || internal->modulesCache.find(module->id) != internal->modulesCache.end()) { // Randomly generate ID @@ -1003,6 +1005,8 @@ void Engine::addCable(Cable* cable) { if (cable2->outputModule == cable->outputModule && cable2->outputId == cable->outputId) outputWasConnected = true; } + // Reinitialize random module since it uses thread-local RNG state + random::init(); // Set ID if unset or collides with an existing ID while (cable->id < 0 || internal->cablesCache.find(cable->id) != internal->cablesCache.end()) { // Randomly generate ID