Huw Davies (@huw) commented about dlls/mmdevapi/audiosessionmanager.c:
static struct list g_sessions = LIST_INIT(g_sessions);
+static CRITICAL_SECTION g_sessions_lock; +static CRITICAL_SECTION_DEBUG g_sessions_lock_debug = +{ + 0, 0, &g_sessions_lock, + { &g_sessions_lock_debug.ProcessLocksList, &g_sessions_lock_debug.ProcessLocksList }, + 0, 0, { (DWORD_PTR)(__FILE__ ": g_sessions_lock") } +}; +static CRITICAL_SECTION g_sessions_lock = { &g_sessions_lock_debug, -1, 0, 0, 0, 0 }; + +void lock_sessions(const BOOLEAN lock) +{ + lock ? EnterCriticalSection(&g_sessions_lock) : LeaveCriticalSection(&g_sessions_lock); +} + I'd prefer two functions `sessions_lock()` and `sessions_unlock()` (cf. `pulse_lock()` and `pulse_unlock()`).
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/2669#note_30835