Remove legacy SDL_Audio functions that acts on device id == 1

main
Sylvain 2023-01-05 09:57:14 +01:00 committed by Ryan C. Gordon
parent bb34441474
commit 2d7f8d7d51
10 changed files with 64 additions and 334 deletions

View File

@ -58,6 +58,18 @@ The following functions have been renamed:
* SDL_FreeAudioStream() => SDL_DestroyAudioStream() * SDL_FreeAudioStream() => SDL_DestroyAudioStream()
* SDL_NewAudioStream() => SDL_CreateAudioStream() * SDL_NewAudioStream() => SDL_CreateAudioStream()
The following functions have been removed:
* SDL_OpenAudio()
* SDL_CloseAudio()
* SDL_PauseAudio()
* SDL_GetAudioStatus()
* SDL_LockAudio()
* SDL_UnlockAudio()
* SDL_MixAudio()
Use the SDL_AudioDevice functions instead.
## SDL_cpuinfo.h ## SDL_cpuinfo.h
SDL_Has3DNow() has been removed; there is no replacement. SDL_Has3DNow() has been removed; there is no replacement.

View File

@ -166,7 +166,7 @@ typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream,
int len); int len);
/** /**
* The calculated values in this structure are calculated by SDL_OpenAudio(). * The calculated values in this structure are calculated by SDL_OpenAudioDevice().
* *
* For multi-channel audio, the default SDL channel mapping is: * For multi-channel audio, the default SDL channel mapping is:
* 2: FL FR (stereo) * 2: FL FR (stereo)
@ -314,64 +314,8 @@ extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index);
*/ */
extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void); extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void);
/**
* This function is a legacy means of opening the audio device.
*
* This function remains for compatibility with SDL 1.2, but also because it's
* slightly easier to use than the new functions in SDL 2.0. The new, more
* powerful, and preferred way to do this is SDL_OpenAudioDevice().
*
* This function is roughly equivalent to:
*
* ```c
* SDL_OpenAudioDevice(NULL, 0, desired, obtained, SDL_AUDIO_ALLOW_ANY_CHANGE);
* ```
*
* With two notable exceptions:
*
* - If `obtained` is NULL, we use `desired` (and allow no changes), which
* means desired will be modified to have the correct values for silence,
* etc, and SDL will convert any differences between your app's specific
* request and the hardware behind the scenes.
* - The return value is always success or failure, and not a device ID, which
* means you can only have one device open at a time with this function.
*
* \param desired an SDL_AudioSpec structure representing the desired output
* format. Please refer to the SDL_OpenAudioDevice
* documentation for details on how to prepare this structure.
* \param obtained an SDL_AudioSpec structure filled in with the actual
* parameters, or NULL.
* \returns 0 if successful, placing the actual hardware parameters in the
* structure pointed to by `obtained`.
*
* If `obtained` is NULL, the audio data passed to the callback
* function will be guaranteed to be in the requested format, and
* will be automatically converted to the actual hardware audio
* format if necessary. If `obtained` is NULL, `desired` will have
* fields modified.
*
* This function returns a negative error code on failure to open the
* audio device or failure to set up the audio thread; call
* SDL_GetError() for more information.
*
* \since This function is available since SDL 3.0.0.
*
* \sa SDL_CloseAudio
* \sa SDL_LockAudio
* \sa SDL_PauseAudio
* \sa SDL_UnlockAudio
*/
extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired,
SDL_AudioSpec * obtained);
/** /**
* SDL Audio Device IDs. * SDL Audio Device IDs.
*
* A successful call to SDL_OpenAudio() is always device id 1, and legacy
* SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls
* always returns devices >= 2 on success. The legacy calls are good both
* for backwards compatibility and when you don't care about multiple,
* specific, or capture devices.
*/ */
typedef Uint32 SDL_AudioDeviceID; typedef Uint32 SDL_AudioDeviceID;
@ -515,17 +459,8 @@ extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name,
/** /**
* Open a specific audio device. * Open a specific audio device.
* *
* SDL_OpenAudio(), unlike this function, always acts on device ID 1. As such, * Passing in a `device` name of NULL requests the most reasonable default.
* this function will never return a 1 so as not to conflict with the legacy * The `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but
* function.
*
* Please note that SDL 2.0 before 2.0.5 did not support recording; as such,
* this function would fail if `iscapture` was not zero. Starting with SDL
* 2.0.5, recording is implemented and this value can be non-zero.
*
* Passing in a `device` name of NULL requests the most reasonable default
* (and is equivalent to what SDL_OpenAudio() does to choose a device). The
* `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but
* some drivers allow arbitrary and driver-specific strings, such as a * some drivers allow arbitrary and driver-specific strings, such as a
* hostname/IP address for a remote audio server, or a filename in the * hostname/IP address for a remote audio server, or a filename in the
* diskaudio driver. * diskaudio driver.
@ -604,9 +539,9 @@ extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name,
* \param iscapture non-zero to specify a device should be opened for * \param iscapture non-zero to specify a device should be opened for
* recording, not playback * recording, not playback
* \param desired an SDL_AudioSpec structure representing the desired output * \param desired an SDL_AudioSpec structure representing the desired output
* format; see SDL_OpenAudio() for more information * format
* \param obtained an SDL_AudioSpec structure filled in with the actual output * \param obtained an SDL_AudioSpec structure filled in with the actual output
* format; see SDL_OpenAudio() for more information * format
* \param allowed_changes 0, or one or more flags OR'd together * \param allowed_changes 0, or one or more flags OR'd together
* \returns a valid device ID that is > 0 on success or 0 on failure; call * \returns a valid device ID that is > 0 on success or 0 on failure; call
* SDL_GetError() for more information. * SDL_GetError() for more information.
@ -619,7 +554,6 @@ extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name,
* \sa SDL_CloseAudioDevice * \sa SDL_CloseAudioDevice
* \sa SDL_GetAudioDeviceName * \sa SDL_GetAudioDeviceName
* \sa SDL_LockAudioDevice * \sa SDL_LockAudioDevice
* \sa SDL_OpenAudio
* \sa SDL_PauseAudioDevice * \sa SDL_PauseAudioDevice
* \sa SDL_UnlockAudioDevice * \sa SDL_UnlockAudioDevice
*/ */
@ -645,26 +579,6 @@ typedef enum
SDL_AUDIO_PAUSED SDL_AUDIO_PAUSED
} SDL_AudioStatus; } SDL_AudioStatus;
/**
* This function is a legacy means of querying the audio device.
*
* New programs might want to use SDL_GetAudioDeviceStatus() instead. This
* function is equivalent to calling...
*
* ```c
* SDL_GetAudioDeviceStatus(1);
* ```
*
* ...and is only useful if you used the legacy SDL_OpenAudio() function.
*
* \returns the SDL_AudioStatus of the audio device opened by SDL_OpenAudio().
*
* \since This function is available since SDL 3.0.0.
*
* \sa SDL_GetAudioDeviceStatus
*/
extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void);
/** /**
* Use this function to get the current audio state of an audio device. * Use this function to get the current audio state of an audio device.
* *
@ -679,38 +593,6 @@ extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void);
extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev); extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev);
/* @} *//* Audio State */ /* @} *//* Audio State */
/**
* \name Pause audio functions
*
* These functions pause and unpause the audio callback processing.
* They should be called with a parameter of 0 after opening the audio
* device to start playing sound. This is so you can safely initialize
* data for your callback function after opening the audio device.
* Silence will be written to the audio device during the pause.
*/
/* @{ */
/**
* This function is a legacy means of pausing the audio device.
*
* New programs might want to use SDL_PauseAudioDevice() instead. This
* function is equivalent to calling...
*
* ```c
* SDL_PauseAudioDevice(1, pause_on);
* ```
*
* ...and is only useful if you used the legacy SDL_OpenAudio() function.
*
* \param pause_on non-zero to pause, 0 to unpause
*
* \since This function is available since SDL 3.0.0.
*
* \sa SDL_GetAudioStatus
* \sa SDL_PauseAudioDevice
*/
extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);
/** /**
* Use this function to pause and unpause audio playback on a specified * Use this function to pause and unpause audio playback on a specified
* device. * device.
@ -741,7 +623,6 @@ extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on);
*/ */
extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev, extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev,
int pause_on); int pause_on);
/* @} *//* Pause audio functions */
/** /**
* Load the audio data of a WAVE file into memory. * Load the audio data of a WAVE file into memory.
@ -1060,31 +941,6 @@ extern DECLSPEC void SDLCALL SDL_DestroyAudioStream(SDL_AudioStream *stream);
#define SDL_MIX_MAXVOLUME 128 #define SDL_MIX_MAXVOLUME 128
/**
* This function is a legacy means of mixing audio.
*
* This function is equivalent to calling...
*
* ```c
* SDL_MixAudioFormat(dst, src, format, len, volume);
* ```
*
* ...where `format` is the obtained format of the audio device from the
* legacy SDL_OpenAudio() function.
*
* \param dst the destination for the mixed audio
* \param src the source audio buffer to be mixed
* \param len the length of the audio buffer in bytes
* \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME
* for full audio volume
*
* \since This function is available since SDL 3.0.0.
*
* \sa SDL_MixAudioFormat
*/
extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src,
Uint32 len, int volume);
/** /**
* Mix audio data in a specified format. * Mix audio data in a specified format.
* *
@ -1295,26 +1151,6 @@ extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev);
*/ */
/* @{ */ /* @{ */
/**
* This function is a legacy means of locking the audio device.
*
* New programs might want to use SDL_LockAudioDevice() instead. This function
* is equivalent to calling...
*
* ```c
* SDL_LockAudioDevice(1);
* ```
*
* ...and is only useful if you used the legacy SDL_OpenAudio() function.
*
* \since This function is available since SDL 3.0.0.
*
* \sa SDL_LockAudioDevice
* \sa SDL_UnlockAudio
* \sa SDL_UnlockAudioDevice
*/
extern DECLSPEC void SDLCALL SDL_LockAudio(void);
/** /**
* Use this function to lock out the audio callback function for a specified * Use this function to lock out the audio callback function for a specified
* device. * device.
@ -1354,25 +1190,6 @@ extern DECLSPEC void SDLCALL SDL_LockAudio(void);
*/ */
extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev); extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev);
/**
* This function is a legacy means of unlocking the audio device.
*
* New programs might want to use SDL_UnlockAudioDevice() instead. This
* function is equivalent to calling...
*
* ```c
* SDL_UnlockAudioDevice(1);
* ```
*
* ...and is only useful if you used the legacy SDL_OpenAudio() function.
*
* \since This function is available since SDL 3.0.0.
*
* \sa SDL_LockAudio
* \sa SDL_UnlockAudioDevice
*/
extern DECLSPEC void SDLCALL SDL_UnlockAudio(void);
/** /**
* Use this function to unlock the audio callback function for a specified * Use this function to unlock the audio callback function for a specified
* device. * device.
@ -1388,23 +1205,6 @@ extern DECLSPEC void SDLCALL SDL_UnlockAudio(void);
extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev); extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev);
/* @} *//* Audio lock functions */ /* @} *//* Audio lock functions */
/**
* This function is a legacy means of closing the audio device.
*
* This function is equivalent to calling...
*
* ```c
* SDL_CloseAudioDevice(1);
* ```
*
* ...and is only useful if you used the legacy SDL_OpenAudio() function.
*
* \since This function is available since SDL 3.0.0.
*
* \sa SDL_OpenAudio
*/
extern DECLSPEC void SDLCALL SDL_CloseAudio(void);
/** /**
* Use this function to shut down audio processing and close the audio device. * Use this function to shut down audio processing and close the audio device.
* *

View File

@ -92,6 +92,7 @@ typedef struct
/* Audio info */ /* Audio info */
const char *audiodriver; const char *audiodriver;
SDL_AudioSpec audiospec; SDL_AudioSpec audiospec;
SDL_AudioDeviceID audio_id;
/* GL settings */ /* GL settings */
int gl_red_size; int gl_red_size;

View File

@ -1492,40 +1492,6 @@ static SDL_AudioDeviceID open_audio_device(const char *devname, int iscapture,
return device->id; return device->id;
} }
int SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained)
{
SDL_AudioDeviceID id = 0;
/* Start up the audio driver, if necessary. This is legacy behaviour! */
if (!SDL_WasInit(SDL_INIT_AUDIO)) {
if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0) {
return -1;
}
}
/* SDL_OpenAudio() is legacy and can only act on Device ID #1. */
if (open_devices[0] != NULL) {
return SDL_SetError("Audio device is already opened");
}
if (obtained) {
id = open_audio_device(NULL, 0, desired, obtained,
SDL_AUDIO_ALLOW_ANY_CHANGE, 1);
} else {
SDL_AudioSpec _obtained;
SDL_zero(_obtained);
id = open_audio_device(NULL, 0, desired, &_obtained, 0, 1);
/* On successful open, copy calculated values into 'desired'. */
if (id > 0) {
desired->size = _obtained.size;
desired->silence = _obtained.silence;
}
}
SDL_assert((id == 0) || (id == 1));
return (id == 0) ? -1 : 0;
}
SDL_AudioDeviceID SDL_AudioDeviceID
SDL_OpenAudioDevice(const char *device, int iscapture, SDL_OpenAudioDevice(const char *device, int iscapture,
const SDL_AudioSpec *desired, SDL_AudioSpec *obtained, const SDL_AudioSpec *desired, SDL_AudioSpec *obtained,
@ -1550,12 +1516,6 @@ SDL_GetAudioDeviceStatus(SDL_AudioDeviceID devid)
return status; return status;
} }
SDL_AudioStatus
SDL_GetAudioStatus(void)
{
return SDL_GetAudioDeviceStatus(1);
}
void SDL_PauseAudioDevice(SDL_AudioDeviceID devid, int pause_on) void SDL_PauseAudioDevice(SDL_AudioDeviceID devid, int pause_on)
{ {
SDL_AudioDevice *device = get_audio_device(devid); SDL_AudioDevice *device = get_audio_device(devid);
@ -1566,11 +1526,6 @@ void SDL_PauseAudioDevice(SDL_AudioDeviceID devid, int pause_on)
} }
} }
void SDL_PauseAudio(int pause_on)
{
SDL_PauseAudioDevice(1, pause_on);
}
void SDL_LockAudioDevice(SDL_AudioDeviceID devid) void SDL_LockAudioDevice(SDL_AudioDeviceID devid)
{ {
/* Obtain a lock on the mixing buffers */ /* Obtain a lock on the mixing buffers */
@ -1580,11 +1535,6 @@ void SDL_LockAudioDevice(SDL_AudioDeviceID devid)
} }
} }
void SDL_LockAudio(void)
{
SDL_LockAudioDevice(1);
}
void SDL_UnlockAudioDevice(SDL_AudioDeviceID devid) void SDL_UnlockAudioDevice(SDL_AudioDeviceID devid)
{ {
/* Obtain a lock on the mixing buffers */ /* Obtain a lock on the mixing buffers */
@ -1594,21 +1544,11 @@ void SDL_UnlockAudioDevice(SDL_AudioDeviceID devid)
} }
} }
void SDL_UnlockAudio(void)
{
SDL_UnlockAudioDevice(1);
}
void SDL_CloseAudioDevice(SDL_AudioDeviceID devid) void SDL_CloseAudioDevice(SDL_AudioDeviceID devid)
{ {
close_audio_device(get_audio_device(devid)); close_audio_device(get_audio_device(devid));
} }
void SDL_CloseAudio(void)
{
SDL_CloseAudioDevice(1);
}
void SDL_QuitAudio(void) void SDL_QuitAudio(void)
{ {
SDL_AudioDeviceID i; SDL_AudioDeviceID i;
@ -1710,15 +1650,3 @@ void SDL_CalculateAudioSpec(SDL_AudioSpec *spec)
spec->size *= spec->samples; spec->size *= spec->samples;
} }
/*
* Moved here from SDL_mixer.c, since it relies on internals of an opened
* audio device (and is deprecated, by the way!).
*/
void SDL_MixAudio(Uint8 *dst, const Uint8 *src, Uint32 len, int volume)
{
/* Mix the user-level audio format */
SDL_AudioDevice *device = get_audio_device(1);
if (device != NULL) {
SDL_MixAudioFormat(dst, src, device->callbackspec.format, len, volume);
}
}

View File

@ -38,7 +38,6 @@ SDL3_0.0.0 {
SDL_ClearError; SDL_ClearError;
SDL_ClearHints; SDL_ClearHints;
SDL_ClearQueuedAudio; SDL_ClearQueuedAudio;
SDL_CloseAudio;
SDL_CloseAudioDevice; SDL_CloseAudioDevice;
SDL_CloseGamepad; SDL_CloseGamepad;
SDL_CloseJoystick; SDL_CloseJoystick;
@ -150,7 +149,6 @@ SDL3_0.0.0 {
SDL_GetAudioDeviceSpec; SDL_GetAudioDeviceSpec;
SDL_GetAudioDeviceStatus; SDL_GetAudioDeviceStatus;
SDL_GetAudioDriver; SDL_GetAudioDriver;
SDL_GetAudioStatus;
SDL_GetAudioStreamAvailable; SDL_GetAudioStreamAvailable;
SDL_GetAudioStreamData; SDL_GetAudioStreamData;
SDL_GetBasePath; SDL_GetBasePath;
@ -448,7 +446,6 @@ SDL3_0.0.0 {
SDL_LoadFunction; SDL_LoadFunction;
SDL_LoadObject; SDL_LoadObject;
SDL_LoadWAV_RW; SDL_LoadWAV_RW;
SDL_LockAudio;
SDL_LockAudioDevice; SDL_LockAudioDevice;
SDL_LockJoysticks; SDL_LockJoysticks;
SDL_LockMutex; SDL_LockMutex;
@ -480,7 +477,6 @@ SDL3_0.0.0 {
SDL_Metal_GetDrawableSize; SDL_Metal_GetDrawableSize;
SDL_Metal_GetLayer; SDL_Metal_GetLayer;
SDL_MinimizeWindow; SDL_MinimizeWindow;
SDL_MixAudio;
SDL_MixAudioFormat; SDL_MixAudioFormat;
SDL_MouseIsHaptic; SDL_MouseIsHaptic;
SDL_NumHaptics; SDL_NumHaptics;
@ -491,13 +487,11 @@ SDL3_0.0.0 {
SDL_OnApplicationWillEnterForeground; SDL_OnApplicationWillEnterForeground;
SDL_OnApplicationWillResignActive; SDL_OnApplicationWillResignActive;
SDL_OnApplicationWillTerminate; SDL_OnApplicationWillTerminate;
SDL_OpenAudio;
SDL_OpenAudioDevice; SDL_OpenAudioDevice;
SDL_OpenGamepad; SDL_OpenGamepad;
SDL_OpenJoystick; SDL_OpenJoystick;
SDL_OpenSensor; SDL_OpenSensor;
SDL_OpenURL; SDL_OpenURL;
SDL_PauseAudio;
SDL_PauseAudioDevice; SDL_PauseAudioDevice;
SDL_PeepEvents; SDL_PeepEvents;
SDL_PollEvent; SDL_PollEvent;
@ -665,7 +659,6 @@ SDL3_0.0.0 {
SDL_ThreadID; SDL_ThreadID;
SDL_TryLockMutex; SDL_TryLockMutex;
SDL_UnloadObject; SDL_UnloadObject;
SDL_UnlockAudio;
SDL_UnlockAudioDevice; SDL_UnlockAudioDevice;
SDL_UnlockJoysticks; SDL_UnlockJoysticks;
SDL_UnlockMutex; SDL_UnlockMutex;

View File

@ -64,7 +64,6 @@
#define SDL_ClearError SDL_ClearError_REAL #define SDL_ClearError SDL_ClearError_REAL
#define SDL_ClearHints SDL_ClearHints_REAL #define SDL_ClearHints SDL_ClearHints_REAL
#define SDL_ClearQueuedAudio SDL_ClearQueuedAudio_REAL #define SDL_ClearQueuedAudio SDL_ClearQueuedAudio_REAL
#define SDL_CloseAudio SDL_CloseAudio_REAL
#define SDL_CloseAudioDevice SDL_CloseAudioDevice_REAL #define SDL_CloseAudioDevice SDL_CloseAudioDevice_REAL
#define SDL_CloseGamepad SDL_CloseGamepad_REAL #define SDL_CloseGamepad SDL_CloseGamepad_REAL
#define SDL_CloseJoystick SDL_CloseJoystick_REAL #define SDL_CloseJoystick SDL_CloseJoystick_REAL
@ -176,7 +175,6 @@
#define SDL_GetAudioDeviceSpec SDL_GetAudioDeviceSpec_REAL #define SDL_GetAudioDeviceSpec SDL_GetAudioDeviceSpec_REAL
#define SDL_GetAudioDeviceStatus SDL_GetAudioDeviceStatus_REAL #define SDL_GetAudioDeviceStatus SDL_GetAudioDeviceStatus_REAL
#define SDL_GetAudioDriver SDL_GetAudioDriver_REAL #define SDL_GetAudioDriver SDL_GetAudioDriver_REAL
#define SDL_GetAudioStatus SDL_GetAudioStatus_REAL
#define SDL_GetAudioStreamAvailable SDL_GetAudioStreamAvailable_REAL #define SDL_GetAudioStreamAvailable SDL_GetAudioStreamAvailable_REAL
#define SDL_GetAudioStreamData SDL_GetAudioStreamData_REAL #define SDL_GetAudioStreamData SDL_GetAudioStreamData_REAL
#define SDL_GetBasePath SDL_GetBasePath_REAL #define SDL_GetBasePath SDL_GetBasePath_REAL
@ -474,7 +472,6 @@
#define SDL_LoadFunction SDL_LoadFunction_REAL #define SDL_LoadFunction SDL_LoadFunction_REAL
#define SDL_LoadObject SDL_LoadObject_REAL #define SDL_LoadObject SDL_LoadObject_REAL
#define SDL_LoadWAV_RW SDL_LoadWAV_RW_REAL #define SDL_LoadWAV_RW SDL_LoadWAV_RW_REAL
#define SDL_LockAudio SDL_LockAudio_REAL
#define SDL_LockAudioDevice SDL_LockAudioDevice_REAL #define SDL_LockAudioDevice SDL_LockAudioDevice_REAL
#define SDL_LockJoysticks SDL_LockJoysticks_REAL #define SDL_LockJoysticks SDL_LockJoysticks_REAL
#define SDL_LockMutex SDL_LockMutex_REAL #define SDL_LockMutex SDL_LockMutex_REAL
@ -506,7 +503,6 @@
#define SDL_Metal_GetDrawableSize SDL_Metal_GetDrawableSize_REAL #define SDL_Metal_GetDrawableSize SDL_Metal_GetDrawableSize_REAL
#define SDL_Metal_GetLayer SDL_Metal_GetLayer_REAL #define SDL_Metal_GetLayer SDL_Metal_GetLayer_REAL
#define SDL_MinimizeWindow SDL_MinimizeWindow_REAL #define SDL_MinimizeWindow SDL_MinimizeWindow_REAL
#define SDL_MixAudio SDL_MixAudio_REAL
#define SDL_MixAudioFormat SDL_MixAudioFormat_REAL #define SDL_MixAudioFormat SDL_MixAudioFormat_REAL
#define SDL_MouseIsHaptic SDL_MouseIsHaptic_REAL #define SDL_MouseIsHaptic SDL_MouseIsHaptic_REAL
#define SDL_NumHaptics SDL_NumHaptics_REAL #define SDL_NumHaptics SDL_NumHaptics_REAL
@ -517,13 +513,11 @@
#define SDL_OnApplicationWillEnterForeground SDL_OnApplicationWillEnterForeground_REAL #define SDL_OnApplicationWillEnterForeground SDL_OnApplicationWillEnterForeground_REAL
#define SDL_OnApplicationWillResignActive SDL_OnApplicationWillResignActive_REAL #define SDL_OnApplicationWillResignActive SDL_OnApplicationWillResignActive_REAL
#define SDL_OnApplicationWillTerminate SDL_OnApplicationWillTerminate_REAL #define SDL_OnApplicationWillTerminate SDL_OnApplicationWillTerminate_REAL
#define SDL_OpenAudio SDL_OpenAudio_REAL
#define SDL_OpenAudioDevice SDL_OpenAudioDevice_REAL #define SDL_OpenAudioDevice SDL_OpenAudioDevice_REAL
#define SDL_OpenGamepad SDL_OpenGamepad_REAL #define SDL_OpenGamepad SDL_OpenGamepad_REAL
#define SDL_OpenJoystick SDL_OpenJoystick_REAL #define SDL_OpenJoystick SDL_OpenJoystick_REAL
#define SDL_OpenSensor SDL_OpenSensor_REAL #define SDL_OpenSensor SDL_OpenSensor_REAL
#define SDL_OpenURL SDL_OpenURL_REAL #define SDL_OpenURL SDL_OpenURL_REAL
#define SDL_PauseAudio SDL_PauseAudio_REAL
#define SDL_PauseAudioDevice SDL_PauseAudioDevice_REAL #define SDL_PauseAudioDevice SDL_PauseAudioDevice_REAL
#define SDL_PeepEvents SDL_PeepEvents_REAL #define SDL_PeepEvents SDL_PeepEvents_REAL
#define SDL_PollEvent SDL_PollEvent_REAL #define SDL_PollEvent SDL_PollEvent_REAL
@ -691,7 +685,6 @@
#define SDL_ThreadID SDL_ThreadID_REAL #define SDL_ThreadID SDL_ThreadID_REAL
#define SDL_TryLockMutex SDL_TryLockMutex_REAL #define SDL_TryLockMutex SDL_TryLockMutex_REAL
#define SDL_UnloadObject SDL_UnloadObject_REAL #define SDL_UnloadObject SDL_UnloadObject_REAL
#define SDL_UnlockAudio SDL_UnlockAudio_REAL
#define SDL_UnlockAudioDevice SDL_UnlockAudioDevice_REAL #define SDL_UnlockAudioDevice SDL_UnlockAudioDevice_REAL
#define SDL_UnlockJoysticks SDL_UnlockJoysticks_REAL #define SDL_UnlockJoysticks SDL_UnlockJoysticks_REAL
#define SDL_UnlockMutex SDL_UnlockMutex_REAL #define SDL_UnlockMutex SDL_UnlockMutex_REAL

View File

@ -145,7 +145,6 @@ SDL_DYNAPI_PROC(void,SDL_ClearComposition,(void),(),)
SDL_DYNAPI_PROC(void,SDL_ClearError,(void),(),) SDL_DYNAPI_PROC(void,SDL_ClearError,(void),(),)
SDL_DYNAPI_PROC(void,SDL_ClearHints,(void),(),) SDL_DYNAPI_PROC(void,SDL_ClearHints,(void),(),)
SDL_DYNAPI_PROC(void,SDL_ClearQueuedAudio,(SDL_AudioDeviceID a),(a),) SDL_DYNAPI_PROC(void,SDL_ClearQueuedAudio,(SDL_AudioDeviceID a),(a),)
SDL_DYNAPI_PROC(void,SDL_CloseAudio,(void),(),)
SDL_DYNAPI_PROC(void,SDL_CloseAudioDevice,(SDL_AudioDeviceID a),(a),) SDL_DYNAPI_PROC(void,SDL_CloseAudioDevice,(SDL_AudioDeviceID a),(a),)
SDL_DYNAPI_PROC(void,SDL_CloseGamepad,(SDL_Gamepad *a),(a),) SDL_DYNAPI_PROC(void,SDL_CloseGamepad,(SDL_Gamepad *a),(a),)
SDL_DYNAPI_PROC(void,SDL_CloseJoystick,(SDL_Joystick *a),(a),) SDL_DYNAPI_PROC(void,SDL_CloseJoystick,(SDL_Joystick *a),(a),)
@ -250,7 +249,6 @@ SDL_DYNAPI_PROC(const char*,SDL_GetAudioDeviceName,(int a, int b),(a,b),return)
SDL_DYNAPI_PROC(int,SDL_GetAudioDeviceSpec,(int a, int b, SDL_AudioSpec *c),(a,b,c),return) SDL_DYNAPI_PROC(int,SDL_GetAudioDeviceSpec,(int a, int b, SDL_AudioSpec *c),(a,b,c),return)
SDL_DYNAPI_PROC(SDL_AudioStatus,SDL_GetAudioDeviceStatus,(SDL_AudioDeviceID a),(a),return) SDL_DYNAPI_PROC(SDL_AudioStatus,SDL_GetAudioDeviceStatus,(SDL_AudioDeviceID a),(a),return)
SDL_DYNAPI_PROC(const char*,SDL_GetAudioDriver,(int a),(a),return) SDL_DYNAPI_PROC(const char*,SDL_GetAudioDriver,(int a),(a),return)
SDL_DYNAPI_PROC(SDL_AudioStatus,SDL_GetAudioStatus,(void),(),return)
SDL_DYNAPI_PROC(int,SDL_GetAudioStreamAvailable,(SDL_AudioStream *a),(a),return) SDL_DYNAPI_PROC(int,SDL_GetAudioStreamAvailable,(SDL_AudioStream *a),(a),return)
SDL_DYNAPI_PROC(int,SDL_GetAudioStreamData,(SDL_AudioStream *a, void *b, int c),(a,b,c),return) SDL_DYNAPI_PROC(int,SDL_GetAudioStreamData,(SDL_AudioStream *a, void *b, int c),(a,b,c),return)
SDL_DYNAPI_PROC(char*,SDL_GetBasePath,(void),(),return) SDL_DYNAPI_PROC(char*,SDL_GetBasePath,(void),(),return)
@ -541,7 +539,6 @@ SDL_DYNAPI_PROC(void*,SDL_LoadFile_RW,(SDL_RWops *a, size_t *b, int c),(a,b,c),r
SDL_DYNAPI_PROC(void*,SDL_LoadFunction,(void *a, const char *b),(a,b),return) SDL_DYNAPI_PROC(void*,SDL_LoadFunction,(void *a, const char *b),(a,b),return)
SDL_DYNAPI_PROC(void*,SDL_LoadObject,(const char *a),(a),return) SDL_DYNAPI_PROC(void*,SDL_LoadObject,(const char *a),(a),return)
SDL_DYNAPI_PROC(SDL_AudioSpec*,SDL_LoadWAV_RW,(SDL_RWops *a, int b, SDL_AudioSpec *c, Uint8 **d, Uint32 *e),(a,b,c,d,e),return) SDL_DYNAPI_PROC(SDL_AudioSpec*,SDL_LoadWAV_RW,(SDL_RWops *a, int b, SDL_AudioSpec *c, Uint8 **d, Uint32 *e),(a,b,c,d,e),return)
SDL_DYNAPI_PROC(void,SDL_LockAudio,(void),(),)
SDL_DYNAPI_PROC(void,SDL_LockAudioDevice,(SDL_AudioDeviceID a),(a),) SDL_DYNAPI_PROC(void,SDL_LockAudioDevice,(SDL_AudioDeviceID a),(a),)
SDL_DYNAPI_PROC(void,SDL_LockJoysticks,(void),(),) SDL_DYNAPI_PROC(void,SDL_LockJoysticks,(void),(),)
SDL_DYNAPI_PROC(int,SDL_LockMutex,(SDL_mutex *a),(a),return) SDL_DYNAPI_PROC(int,SDL_LockMutex,(SDL_mutex *a),(a),return)
@ -565,7 +562,6 @@ SDL_DYNAPI_PROC(void,SDL_Metal_DestroyView,(SDL_MetalView a),(a),)
SDL_DYNAPI_PROC(void,SDL_Metal_GetDrawableSize,(SDL_Window *a, int *b, int *c),(a,b,c),) SDL_DYNAPI_PROC(void,SDL_Metal_GetDrawableSize,(SDL_Window *a, int *b, int *c),(a,b,c),)
SDL_DYNAPI_PROC(void*,SDL_Metal_GetLayer,(SDL_MetalView a),(a),return) SDL_DYNAPI_PROC(void*,SDL_Metal_GetLayer,(SDL_MetalView a),(a),return)
SDL_DYNAPI_PROC(void,SDL_MinimizeWindow,(SDL_Window *a),(a),) SDL_DYNAPI_PROC(void,SDL_MinimizeWindow,(SDL_Window *a),(a),)
SDL_DYNAPI_PROC(void,SDL_MixAudio,(Uint8 *a, const Uint8 *b, Uint32 c, int d),(a,b,c,d),)
SDL_DYNAPI_PROC(void,SDL_MixAudioFormat,(Uint8 *a, const Uint8 *b, SDL_AudioFormat c, Uint32 d, int e),(a,b,c,d,e),) SDL_DYNAPI_PROC(void,SDL_MixAudioFormat,(Uint8 *a, const Uint8 *b, SDL_AudioFormat c, Uint32 d, int e),(a,b,c,d,e),)
SDL_DYNAPI_PROC(int,SDL_MouseIsHaptic,(void),(),return) SDL_DYNAPI_PROC(int,SDL_MouseIsHaptic,(void),(),return)
SDL_DYNAPI_PROC(int,SDL_NumHaptics,(void),(),return) SDL_DYNAPI_PROC(int,SDL_NumHaptics,(void),(),return)
@ -575,13 +571,11 @@ SDL_DYNAPI_PROC(void,SDL_OnApplicationDidReceiveMemoryWarning,(void),(),)
SDL_DYNAPI_PROC(void,SDL_OnApplicationWillEnterForeground,(void),(),) SDL_DYNAPI_PROC(void,SDL_OnApplicationWillEnterForeground,(void),(),)
SDL_DYNAPI_PROC(void,SDL_OnApplicationWillResignActive,(void),(),) SDL_DYNAPI_PROC(void,SDL_OnApplicationWillResignActive,(void),(),)
SDL_DYNAPI_PROC(void,SDL_OnApplicationWillTerminate,(void),(),) SDL_DYNAPI_PROC(void,SDL_OnApplicationWillTerminate,(void),(),)
SDL_DYNAPI_PROC(int,SDL_OpenAudio,(SDL_AudioSpec *a, SDL_AudioSpec *b),(a,b),return)
SDL_DYNAPI_PROC(SDL_AudioDeviceID,SDL_OpenAudioDevice,(const char *a, int b, const SDL_AudioSpec *c, SDL_AudioSpec *d, int e),(a,b,c,d,e),return) SDL_DYNAPI_PROC(SDL_AudioDeviceID,SDL_OpenAudioDevice,(const char *a, int b, const SDL_AudioSpec *c, SDL_AudioSpec *d, int e),(a,b,c,d,e),return)
SDL_DYNAPI_PROC(SDL_Gamepad*,SDL_OpenGamepad,(SDL_JoystickID a),(a),return) SDL_DYNAPI_PROC(SDL_Gamepad*,SDL_OpenGamepad,(SDL_JoystickID a),(a),return)
SDL_DYNAPI_PROC(SDL_Joystick*,SDL_OpenJoystick,(SDL_JoystickID a),(a),return) SDL_DYNAPI_PROC(SDL_Joystick*,SDL_OpenJoystick,(SDL_JoystickID a),(a),return)
SDL_DYNAPI_PROC(SDL_Sensor*,SDL_OpenSensor,(SDL_SensorID a),(a),return) SDL_DYNAPI_PROC(SDL_Sensor*,SDL_OpenSensor,(SDL_SensorID a),(a),return)
SDL_DYNAPI_PROC(int,SDL_OpenURL,(const char *a),(a),return) SDL_DYNAPI_PROC(int,SDL_OpenURL,(const char *a),(a),return)
SDL_DYNAPI_PROC(void,SDL_PauseAudio,(int a),(a),)
SDL_DYNAPI_PROC(void,SDL_PauseAudioDevice,(SDL_AudioDeviceID a, int b),(a,b),) SDL_DYNAPI_PROC(void,SDL_PauseAudioDevice,(SDL_AudioDeviceID a, int b),(a,b),)
SDL_DYNAPI_PROC(int,SDL_PeepEvents,(SDL_Event *a, int b, SDL_eventaction c, Uint32 d, Uint32 e),(a,b,c,d,e),return) SDL_DYNAPI_PROC(int,SDL_PeepEvents,(SDL_Event *a, int b, SDL_eventaction c, Uint32 d, Uint32 e),(a,b,c,d,e),return)
SDL_DYNAPI_PROC(int,SDL_PollEvent,(SDL_Event *a),(a),return) SDL_DYNAPI_PROC(int,SDL_PollEvent,(SDL_Event *a),(a),return)
@ -745,7 +739,6 @@ SDL_DYNAPI_PROC(SDL_bool,SDL_TextInputShown,(void),(),return)
SDL_DYNAPI_PROC(SDL_threadID,SDL_ThreadID,(void),(),return) SDL_DYNAPI_PROC(SDL_threadID,SDL_ThreadID,(void),(),return)
SDL_DYNAPI_PROC(int,SDL_TryLockMutex,(SDL_mutex *a),(a),return) SDL_DYNAPI_PROC(int,SDL_TryLockMutex,(SDL_mutex *a),(a),return)
SDL_DYNAPI_PROC(void,SDL_UnloadObject,(void *a),(a),) SDL_DYNAPI_PROC(void,SDL_UnloadObject,(void *a),(a),)
SDL_DYNAPI_PROC(void,SDL_UnlockAudio,(void),(),)
SDL_DYNAPI_PROC(void,SDL_UnlockAudioDevice,(SDL_AudioDeviceID a),(a),) SDL_DYNAPI_PROC(void,SDL_UnlockAudioDevice,(SDL_AudioDeviceID a),(a),)
SDL_DYNAPI_PROC(void,SDL_UnlockJoysticks,(void),(),) SDL_DYNAPI_PROC(void,SDL_UnlockJoysticks,(void),(),)
SDL_DYNAPI_PROC(int,SDL_UnlockMutex,(SDL_mutex *a),(a),return) SDL_DYNAPI_PROC(int,SDL_UnlockMutex,(SDL_mutex *a),(a),return)

View File

@ -1350,7 +1350,8 @@ SDLTest_CommonInit(SDLTest_CommonState *state)
SDL_GetCurrentAudioDriver()); SDL_GetCurrentAudioDriver());
} }
if (SDL_OpenAudio(&state->audiospec, NULL) < 0) { state->audio_id = SDL_OpenAudioDevice(NULL, 0, &state->audiospec, NULL, 0);
if (state->audio_id <= 0) {
SDL_Log("Couldn't open audio: %s\n", SDL_GetError()); SDL_Log("Couldn't open audio: %s\n", SDL_GetError());
return SDL_FALSE; return SDL_FALSE;
} }

View File

@ -48,19 +48,21 @@ void poked(int sig)
done = 1; done = 1;
} }
static SDL_AudioDeviceID g_audio_id = 0;
void loop() void loop()
{ {
#ifdef __EMSCRIPTEN__ #ifdef __EMSCRIPTEN__
if (done || (SDL_GetAudioStatus() != SDL_AUDIO_PLAYING)) { if (done || (SDL_GetAudioDeviceStatus(g_audio_id) != SDL_AUDIO_PLAYING)) {
emscripten_cancel_main_loop(); emscripten_cancel_main_loop();
} else } else
#endif #endif
{ {
/* The device from SDL_OpenAudio() is always device #1. */ /* The device from SDL_OpenAudio() is always device #1. */
const Uint32 queued = SDL_GetQueuedAudioSize(1); const Uint32 queued = SDL_GetQueuedAudioSize(g_audio_id);
SDL_Log("Device has %u bytes queued.\n", (unsigned int)queued); SDL_Log("Device has %u bytes queued.\n", (unsigned int)queued);
if (queued <= 8192) { /* time to requeue the whole thing? */ if (queued <= 8192) { /* time to requeue the whole thing? */
if (SDL_QueueAudio(1, wave.sound, wave.soundlen) == 0) { if (SDL_QueueAudio(g_audio_id, wave.sound, wave.soundlen) == 0) {
SDL_Log("Device queued %u more bytes.\n", (unsigned int)wave.soundlen); SDL_Log("Device queued %u more bytes.\n", (unsigned int)wave.soundlen);
} else { } else {
SDL_Log("Device FAILED to queue %u more bytes: %s\n", (unsigned int)wave.soundlen, SDL_GetError()); SDL_Log("Device FAILED to queue %u more bytes: %s\n", (unsigned int)wave.soundlen, SDL_GetError());
@ -110,7 +112,9 @@ int main(int argc, char *argv[])
#endif /* HAVE_SIGNAL_H */ #endif /* HAVE_SIGNAL_H */
/* Initialize fillerup() variables */ /* Initialize fillerup() variables */
if (SDL_OpenAudio(&wave.spec, NULL) < 0) { g_audio_id = SDL_OpenAudioDevice(NULL, 0, &wave.spec, NULL, 0);
if (g_audio_id <= 0) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't open audio: %s\n", SDL_GetError()); SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't open audio: %s\n", SDL_GetError());
SDL_free(wave.sound); SDL_free(wave.sound);
quit(2); quit(2);
@ -119,7 +123,7 @@ int main(int argc, char *argv[])
/*static x[99999]; SDL_QueueAudio(1, x, sizeof (x));*/ /*static x[99999]; SDL_QueueAudio(1, x, sizeof (x));*/
/* Let the audio run */ /* Let the audio run */
SDL_PauseAudio(0); SDL_PauseAudioDevice(g_audio_id, 0);
done = 0; done = 0;
@ -130,7 +134,7 @@ int main(int argc, char *argv[])
#ifdef __EMSCRIPTEN__ #ifdef __EMSCRIPTEN__
emscripten_set_main_loop(loop, 0, 1); emscripten_set_main_loop(loop, 0, 1);
#else #else
while (!done && (SDL_GetAudioStatus() == SDL_AUDIO_PLAYING)) { while (!done && (SDL_GetAudioDeviceStatus(g_audio_id) == SDL_AUDIO_PLAYING)) {
loop(); loop();
SDL_Delay(100); /* let it play for awhile. */ SDL_Delay(100); /* let it play for awhile. */
@ -138,7 +142,7 @@ int main(int argc, char *argv[])
#endif #endif
/* Clean up on signal */ /* Clean up on signal */
SDL_CloseAudio(); SDL_CloseAudioDevice(g_audio_id);
SDL_free(wave.sound); SDL_free(wave.sound);
SDL_free(filename); SDL_free(filename);
SDL_Quit(); SDL_Quit();

View File

@ -50,6 +50,8 @@ static void SDLCALL audio_testCallback(void *userdata, Uint8 *stream, int len)
g_audio_testCallbackLength += len; g_audio_testCallbackLength += len;
} }
static SDL_AudioDeviceID g_audio_id = -1;
/* Test case functions */ /* Test case functions */
/** /**
@ -130,13 +132,13 @@ int audio_initQuitAudio()
* \brief Start, open, close and stop audio * \brief Start, open, close and stop audio
* *
* \sa https://wiki.libsdl.org/SDL_InitAudio * \sa https://wiki.libsdl.org/SDL_InitAudio
* \sa https://wiki.libsdl.org/SDL_OpenAudio * \sa https://wiki.libsdl.org/SDL_OpenAudioDevice
* \sa https://wiki.libsdl.org/SDL_CloseAudio * \sa https://wiki.libsdl.org/SDL_CloseAudioDevice
* \sa https://wiki.libsdl.org/SDL_QuitAudio * \sa https://wiki.libsdl.org/SDL_QuitAudio
*/ */
int audio_initOpenCloseQuitAudio() int audio_initOpenCloseQuitAudio()
{ {
int result, expectedResult; int result;
int i, iMax, j, k; int i, iMax, j, k;
const char *audioDriver; const char *audioDriver;
SDL_AudioSpec desired; SDL_AudioSpec desired;
@ -189,16 +191,18 @@ int audio_initOpenCloseQuitAudio()
/* Call Open (maybe multiple times) */ /* Call Open (maybe multiple times) */
for (k = 0; k <= j; k++) { for (k = 0; k <= j; k++) {
result = SDL_OpenAudio(&desired, NULL); result = SDL_OpenAudioDevice(NULL, 0, &desired, NULL, 0);
SDLTest_AssertPass("Call to SDL_OpenAudio(desired_spec_%d, NULL), call %d", j, k + 1); if (k == 0) {
expectedResult = (k == 0) ? 0 : -1; g_audio_id = result;
SDLTest_AssertCheck(result == expectedResult, "Verify return value; expected: %d, got: %d", expectedResult, result); }
SDLTest_AssertPass("Call to SDL_OpenAudioDevice(NULL, 0, desired_spec_%d, NULL, 0), call %d", j, k + 1);
SDLTest_AssertCheck(result > 0, "Verify return value; expected: > 0, got: %d", result);
} }
/* Call Close (maybe multiple times) */ /* Call Close (maybe multiple times) */
for (k = 0; k <= j; k++) { for (k = 0; k <= j; k++) {
SDL_CloseAudio(); SDL_CloseAudioDevice(g_audio_id);
SDLTest_AssertPass("Call to SDL_CloseAudio(), call %d", k + 1); SDLTest_AssertPass("Call to SDL_CloseAudioDevice(), call %d", k + 1);
} }
/* Call Quit (maybe multiple times) */ /* Call Quit (maybe multiple times) */
@ -219,7 +223,7 @@ int audio_initOpenCloseQuitAudio()
/** /**
* \brief Pause and unpause audio * \brief Pause and unpause audio
* *
* \sa https://wiki.libsdl.org/SDL_PauseAudio * \sa https://wiki.libsdl.org/SDL_PauseAudioDevice
*/ */
int audio_pauseUnpauseAudio() int audio_pauseUnpauseAudio()
{ {
@ -278,9 +282,10 @@ int audio_pauseUnpauseAudio()
} }
/* Call Open */ /* Call Open */
result = SDL_OpenAudio(&desired, NULL); g_audio_id = SDL_OpenAudioDevice(NULL, 0, &desired, NULL, 0);
SDLTest_AssertPass("Call to SDL_OpenAudio(desired_spec_%d, NULL)", j); result = g_audio_id;
SDLTest_AssertCheck(result == 0, "Verify return value; expected: 0 got: %d", result); SDLTest_AssertPass("Call to SDL_OpenAudioDevice(NULL, 0, desired_spec_%d, NULL, 0)", j);
SDLTest_AssertCheck(result > 0, "Verify return value; expected > 0 got: %d", result);
/* Start and stop audio multiple times */ /* Start and stop audio multiple times */
for (l = 0; l < 3; l++) { for (l = 0; l < 3; l++) {
@ -293,8 +298,8 @@ int audio_pauseUnpauseAudio()
/* Un-pause audio to start playing (maybe multiple times) */ /* Un-pause audio to start playing (maybe multiple times) */
pause_on = 0; pause_on = 0;
for (k = 0; k <= j; k++) { for (k = 0; k <= j; k++) {
SDL_PauseAudio(pause_on); SDL_PauseAudioDevice(g_audio_id, pause_on);
SDLTest_AssertPass("Call to SDL_PauseAudio(%d), call %d", pause_on, k + 1); SDLTest_AssertPass("Call to SDL_PauseAudioDevice(g_audio_id, %d), call %d", pause_on, k + 1);
} }
/* Wait for callback */ /* Wait for callback */
@ -309,8 +314,8 @@ int audio_pauseUnpauseAudio()
/* Pause audio to stop playing (maybe multiple times) */ /* Pause audio to stop playing (maybe multiple times) */
for (k = 0; k <= j; k++) { for (k = 0; k <= j; k++) {
pause_on = (k == 0) ? 1 : SDLTest_RandomIntegerInRange(99, 9999); pause_on = (k == 0) ? 1 : SDLTest_RandomIntegerInRange(99, 9999);
SDL_PauseAudio(pause_on); SDL_PauseAudioDevice(g_audio_id, pause_on);
SDLTest_AssertPass("Call to SDL_PauseAudio(%d), call %d", pause_on, k + 1); SDLTest_AssertPass("Call to SDL_PauseAudioDevice(g_audio_id, %d), call %d", pause_on, k + 1);
} }
/* Ensure callback is not called again */ /* Ensure callback is not called again */
@ -320,8 +325,8 @@ int audio_pauseUnpauseAudio()
} }
/* Call Close */ /* Call Close */
SDL_CloseAudio(); SDL_CloseAudioDevice(g_audio_id);
SDLTest_AssertPass("Call to SDL_CloseAudio()"); SDLTest_AssertPass("Call to SDL_CloseAudioDevice()");
/* Call Quit */ /* Call Quit */
SDL_QuitSubSystem(SDL_INIT_AUDIO); SDL_QuitSubSystem(SDL_INIT_AUDIO);
@ -664,15 +669,15 @@ int audio_buildAudioCVTNegative()
/** /**
* \brief Checks current audio status. * \brief Checks current audio status.
* *
* \sa https://wiki.libsdl.org/SDL_GetAudioStatus * \sa https://wiki.libsdl.org/SDL_GetAudioDeviceStatus
*/ */
int audio_getAudioStatus() int audio_getAudioStatus()
{ {
SDL_AudioStatus result; SDL_AudioStatus result;
/* Check current audio status */ /* Check current audio status */
result = SDL_GetAudioStatus(); result = SDL_GetAudioDeviceStatus(g_audio_id);
SDLTest_AssertPass("Call to SDL_GetAudioStatus()"); SDLTest_AssertPass("Call to SDL_GetAudioDeviceStatus(g_audio_id)");
SDLTest_AssertCheck(result == SDL_AUDIO_STOPPED || result == SDL_AUDIO_PLAYING || result == SDL_AUDIO_PAUSED, SDLTest_AssertCheck(result == SDL_AUDIO_STOPPED || result == SDL_AUDIO_PLAYING || result == SDL_AUDIO_PAUSED,
"Verify returned value; expected: STOPPED (%i) | PLAYING (%i) | PAUSED (%i), got: %i", "Verify returned value; expected: STOPPED (%i) | PLAYING (%i) | PAUSED (%i), got: %i",
SDL_AUDIO_STOPPED, SDL_AUDIO_PLAYING, SDL_AUDIO_PAUSED, result); SDL_AUDIO_STOPPED, SDL_AUDIO_PLAYING, SDL_AUDIO_PAUSED, result);
@ -718,8 +723,8 @@ int audio_openCloseAndGetAudioStatus()
/* Open device */ /* Open device */
id = SDL_OpenAudioDevice(device, 0, &desired, &obtained, SDL_AUDIO_ALLOW_ANY_CHANGE); id = SDL_OpenAudioDevice(device, 0, &desired, &obtained, SDL_AUDIO_ALLOW_ANY_CHANGE);
SDLTest_AssertPass("SDL_OpenAudioDevice('%s',...)", device); SDLTest_AssertPass("SDL_OpenAudioDevice('%s',...)", device);
SDLTest_AssertCheck(id > 1, "Validate device ID; expected: >=2, got: %" SDL_PRIu32, id); SDLTest_AssertCheck(id > 0, "Validate device ID; expected: > 0, got: %" SDL_PRIu32, id);
if (id > 1) { if (id > 0) {
/* Check device audio status */ /* Check device audio status */
result = SDL_GetAudioDeviceStatus(id); result = SDL_GetAudioDeviceStatus(id);
@ -778,8 +783,8 @@ int audio_lockUnlockOpenAudioDevice()
/* Open device */ /* Open device */
id = SDL_OpenAudioDevice(device, 0, &desired, &obtained, SDL_AUDIO_ALLOW_ANY_CHANGE); id = SDL_OpenAudioDevice(device, 0, &desired, &obtained, SDL_AUDIO_ALLOW_ANY_CHANGE);
SDLTest_AssertPass("SDL_OpenAudioDevice('%s',...)", device); SDLTest_AssertPass("SDL_OpenAudioDevice('%s',...)", device);
SDLTest_AssertCheck(id > 1, "Validate device ID; expected: >=2, got: %" SDL_PRIu32, id); SDLTest_AssertCheck(id > 1, "Validate device ID; expected: > 0, got: %" SDL_PRIu32, id);
if (id > 1) { if (id > 0) {
/* Lock to protect callback */ /* Lock to protect callback */
SDL_LockAudioDevice(id); SDL_LockAudioDevice(id);
SDLTest_AssertPass("SDL_LockAudioDevice(%" SDL_PRIu32 ")", id); SDLTest_AssertPass("SDL_LockAudioDevice(%" SDL_PRIu32 ")", id);
@ -944,8 +949,8 @@ int audio_openCloseAudioDeviceConnected()
/* Open device */ /* Open device */
id = SDL_OpenAudioDevice(device, 0, &desired, &obtained, SDL_AUDIO_ALLOW_ANY_CHANGE); id = SDL_OpenAudioDevice(device, 0, &desired, &obtained, SDL_AUDIO_ALLOW_ANY_CHANGE);
SDLTest_AssertPass("SDL_OpenAudioDevice('%s',...)", device); SDLTest_AssertPass("SDL_OpenAudioDevice('%s',...)", device);
SDLTest_AssertCheck(id > 1, "Validate device ID; expected: >1, got: %" SDL_PRIu32, id); SDLTest_AssertCheck(id > 0, "Validate device ID; expected: > 0, got: %" SDL_PRIu32, id);
if (id > 1) { if (id > 0) {
/* TODO: enable test code when function is available in SDL3 */ /* TODO: enable test code when function is available in SDL3 */