Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Reworked source objects dramatically.
- No longer uses spinlocks. - Mixer thread atomically flags then individually as they are mixing, so operations that need to change unsafe state can synchronize as appropriate. - Now uses SourceBlocks (basically a copy/paste of BufferBlocks) to allocate sources, so you no longer have an artificial limit on sources. - Now adds sources to the mixer playlist through SourcePlayTodo objects, in a linked list, added atomically. This lets us do alSourcePlayv() without a mixer lock and also work with any number of sources, as opposed to the atomic bitfield magic we used before. Still some more work to do (buffer queues...), but this is a step in the right direction!
- Loading branch information