From 38a32047d4aca825363c3ec2ca811f621c91674b Mon Sep 17 00:00:00 2001
From: Cameron Gutman <[EMAIL REDACTED]>
Date: Wed, 26 Feb 2025 17:21:58 -0600
Subject: [PATCH] audio: Fix incorrect value returned from
SDL_AudioStreamAvailable()
The conversion is only necessary for SDL_GetQueuedAudioSize().
---
src/sdl2_compat.c | 44 ++++++++++++++++++++++----------------------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/src/sdl2_compat.c b/src/sdl2_compat.c
index 795b4fc..3c9a121 100644
--- a/src/sdl2_compat.c
+++ b/src/sdl2_compat.c
@@ -7171,27 +7171,7 @@ SDL_AudioStreamClear(SDL2_AudioStream *stream2)
SDL_DECLSPEC int SDLCALL
SDL_AudioStreamAvailable(SDL2_AudioStream *stream2)
{
- SDL_AudioSpec src_spec, dst_spec;
- int src_size, dst_size;
- Sint64 available;
-
- if (!stream2) {
- return 0;
- }
-
- if (!SDL3_GetAudioStreamFormat(stream2->stream3, &src_spec, &dst_spec)) {
- return 0;
- }
-
- available = SDL3_GetAudioStreamAvailable(stream2->stream3);
- if (available < 0) {
- return 0;
- }
-
- src_size = src_spec.channels * src_spec.freq * SDL_AUDIO_BYTESIZE(src_spec.format);
- dst_size = dst_spec.channels * dst_spec.freq * SDL_AUDIO_BYTESIZE(dst_spec.format);
-
- return (int)(available * src_size / dst_size);
+ return (stream2 && stream2->stream3) ? SDL3_GetAudioStreamAvailable(stream2->stream3) : 0;
}
SDL_DECLSPEC void SDLCALL
@@ -7259,7 +7239,27 @@ SDL_DECLSPEC Uint32 SDLCALL
SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev)
{
SDL2_AudioStream *stream2 = GetOpenAudioDevice(dev);
- return (stream2 && (stream2->callback2 == NULL)) ? SDL_AudioStreamAvailable(stream2) : 0;
+ SDL_AudioSpec src_spec, dst_spec;
+ int src_size, dst_size;
+ Sint64 available;
+
+ if (!stream2 || stream2->callback2) {
+ return 0;
+ }
+
+ if (!SDL3_GetAudioStreamFormat(stream2->stream3, &src_spec, &dst_spec)) {
+ return 0;
+ }
+
+ available = SDL3_GetAudioStreamAvailable(stream2->stream3);
+ if (available < 0) {
+ return 0;
+ }
+
+ src_size = src_spec.channels * src_spec.freq * SDL_AUDIO_BYTESIZE(src_spec.format);
+ dst_size = dst_spec.channels * dst_spec.freq * SDL_AUDIO_BYTESIZE(dst_spec.format);
+
+ return (Uint32)(available * src_size / dst_size);
}
SDL_DECLSPEC int SDLCALL