From fd0fd6a8918fb73c76414137f1e16cb75423c290 Mon Sep 17 00:00:00 2001 From: struktured Date: Sun, 29 Mar 2026 17:28:56 -0400 Subject: [PATCH] Implement projectm-eval mutex callbacks The projectm_eval_memory_host_lock/unlock_mutex() callbacks were no-ops, providing no protection when multiple preset expressions access shared memory blocks from different threads. Add a real std::mutex so the eval library's built-in synchronization actually works. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/libprojectM/MilkdropPreset/EvalLibMutex.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/libprojectM/MilkdropPreset/EvalLibMutex.cpp b/src/libprojectM/MilkdropPreset/EvalLibMutex.cpp index 4de96098eb..4e5574e4e2 100644 --- a/src/libprojectM/MilkdropPreset/EvalLibMutex.cpp +++ b/src/libprojectM/MilkdropPreset/EvalLibMutex.cpp @@ -1,4 +1,15 @@ #include -void projectm_eval_memory_host_lock_mutex() {} -void projectm_eval_memory_host_unlock_mutex() {} +#include + +static std::mutex s_evalMutex; + +void projectm_eval_memory_host_lock_mutex() +{ + s_evalMutex.lock(); +} + +void projectm_eval_memory_host_unlock_mutex() +{ + s_evalMutex.unlock(); +}