fix: vec allocation for desktop AudioRing (match Android fix)
Same fix as Android: Box::new([0i16; 16384]) allocates 32KB on the stack before moving to heap. Use vec![].into_boxed_slice() for direct heap allocation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -18,7 +18,7 @@ const RING_MASK: usize = RING_CAPACITY - 1;
|
|||||||
|
|
||||||
/// Lock-free single-producer single-consumer ring buffer for i16 PCM samples.
|
/// Lock-free single-producer single-consumer ring buffer for i16 PCM samples.
|
||||||
pub struct AudioRing {
|
pub struct AudioRing {
|
||||||
buf: Box<[i16; RING_CAPACITY]>,
|
buf: Box<[i16]>,
|
||||||
/// Monotonically increasing write cursor. ONLY written by producer.
|
/// Monotonically increasing write cursor. ONLY written by producer.
|
||||||
write_pos: AtomicUsize,
|
write_pos: AtomicUsize,
|
||||||
/// Monotonically increasing read cursor. ONLY written by consumer.
|
/// Monotonically increasing read cursor. ONLY written by consumer.
|
||||||
@@ -40,7 +40,7 @@ impl AudioRing {
|
|||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
debug_assert!(RING_CAPACITY.is_power_of_two());
|
debug_assert!(RING_CAPACITY.is_power_of_two());
|
||||||
Self {
|
Self {
|
||||||
buf: Box::new([0i16; RING_CAPACITY]),
|
buf: vec![0i16; RING_CAPACITY].into_boxed_slice(),
|
||||||
write_pos: AtomicUsize::new(0),
|
write_pos: AtomicUsize::new(0),
|
||||||
read_pos: AtomicUsize::new(0),
|
read_pos: AtomicUsize::new(0),
|
||||||
overflow_count: AtomicU64::new(0),
|
overflow_count: AtomicU64::new(0),
|
||||||
|
|||||||
Reference in New Issue
Block a user