-
Thomas Guillem authored
Remove the usage of TPCircularBuffer and multiple atomic variables that start to make this code way too complicated. Replace it by os_unfair_lock and a block chain. os_unfair_lock is a safe spinlock that waits in the kernel in case of thread contention. Fallback to pthread_mutex_t if os_unfair_lock is not availaible (before macOS 10.12 / iOS 10.0). The unfairness of this new lock is not an issue here since both locking threads (the render callback and the VLC DecoderThread calling aout_DecPlay) will be automatically paced (and will let the other thread take the lock). Indeed, the render thread need a sample every 22 or 88ms, and the DecoderThread will wait for the decoder, wait in the decoder lock, or wait from the aout if the FIFO is full.
9bb14eda