private void PlatformUpdateQueue()
        {
            // Get the completed buffers
            AL.GetSource(SourceId.Value, ALGetSourcei.BuffersProcessed, out int numBuffers);
            ALHelper.CheckError("Failed to get processed buffer count.");

            // Unqueue them
            if (numBuffers > 0)
            {
                AL.SourceUnqueueBuffers(SourceId.Value, numBuffers);
                ALHelper.CheckError("Failed to unqueue buffers.");

                lock (_queuedBuffers)
                {
                    for (int i = 0; i < numBuffers; i++)
                    {
                        var buffer = _queuedBuffers.Dequeue();
                        ALBufferPool.Return(buffer);
                    }
                }
            }

            // Raise the event for each removed buffer, if needed
            for (int i = 0; i < numBuffers; i++)
            {
                CheckBufferCount();
            }
        }
        private void PlatformStop()
        {
            AL.SourceStop(SourceId.Value);
            ALHelper.CheckError("Failed to stop the source.");

            // Remove all queued buffers
            AL.Source(SourceId.Value, ALSourcei.Buffer, 0);
            ALHelper.CheckError("Failed to unbind the buffer.");

            lock (_queuedBuffers)
            {
                while (_queuedBuffers.Count > 0)
                {
                    var buffer = _queuedBuffers.Dequeue();
                    ALBufferPool.Return(buffer);
                }
            }
        }
        private void PlatformDispose(bool disposing)
        {
            // SFXI disposal handles buffer detachment and source recycling
            base.Dispose(disposing);

            if (disposing)
            {
                lock (_queuedBuffers)
                {
                    while (_queuedBuffers.Count > 0)
                    {
                        var buffer = _queuedBuffers.Dequeue();
                        ALBufferPool.Return(buffer);
                    }
                }
            }
            DynamicSoundEffectInstanceManager.RemoveInstance(this);
        }