#include "SoundSync.h" #include static std::atomic gs_prioritiesBlob(0); SoundSyncState SoundSync_ReadAll() { const uint64_t priorities = gs_prioritiesBlob.load(std::memory_order_relaxed); SoundSyncState state; state.priority0 = static_cast((priorities >> 0) & 0xffff); state.priority1 = static_cast((priorities >> 16) & 0xffff); state.priority2 = static_cast((priorities >> 32) & 0xffff); state.priority3 = static_cast((priorities >> 48) & 0xffff); return state; } void SoundSync_ClearPriority(int index) { const uint64_t clearMask = ~(static_cast(0xffff) << (index * 16)); gs_prioritiesBlob &= clearMask; } void SoundSync_PutPriority(int index, int16_t priority) { const uint64_t insertMask = static_cast(priority) << (index * 16); gs_prioritiesBlob |= insertMask; }