From ec161f8405e5787c6742afebd246d0f94875ed0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burak=20=C5=9Een?= Date: Fri, 14 Aug 2026 16:36:31 +0200 Subject: [PATCH] simplify Raylib queueAudio using IsAudioStreamProcessed guard --- src/platform/raylib.zig | 35 ++--------------------------------- 1 file changed, 2 insertions(+), 33 deletions(-) diff --git a/src/platform/raylib.zig b/src/platform/raylib.zig index 5b3dd98..3925eb3 100644 --- a/src/platform/raylib.zig +++ b/src/platform/raylib.zig @@ -120,39 +120,8 @@ pub const Driver = struct { pub fn queueAudio(self: *Driver, output: usize, buffer: contract.AudioBuffer) void { _ = output; - if (buffer.frames == 0) return; - - const samples = std.mem.bytesAsSlice(i16, buffer.data); - for (samples[0..@min(samples.len, buffer.frames)]) |s| { - const next = (self.audio_ring_head + 1) % self.audio_ring.len; - if (next != self.audio_ring_tail) { - self.audio_ring[self.audio_ring_head] = s; - self.audio_ring_head = next; - } - } - - self.flushAudio(); - } - - fn flushAudio(self: *Driver) void { - while (c.IsAudioStreamProcessed(self.audio_stream)) { - var chunk: [512]i16 = undefined; - var count: usize = 0; - - // Measure available samples in ring buffer - const available = if (self.audio_ring_head >= self.audio_ring_tail) - self.audio_ring_head - self.audio_ring_tail - else - self.audio_ring.len - self.audio_ring_tail + self.audio_ring_head; - - if (available < chunk.len) break; - - while (count < chunk.len) : (count += 1) { - chunk[count] = self.audio_ring[self.audio_ring_tail]; - self.audio_ring_tail = (self.audio_ring_tail + 1) % self.audio_ring.len; - } - - c.UpdateAudioStream(self.audio_stream, &chunk, @intCast(count)); + if (buffer.frames > 0 and c.IsAudioStreamProcessed(self.audio_stream)) { + c.UpdateAudioStream(self.audio_stream, buffer.data.ptr, @intCast(buffer.frames)); } }