null device checks
							parent
							
								
									bf857d4b80
								
							
						
					
					
						commit
						d1a7ddcb9f
					
				|  | @ -306,6 +306,9 @@ typedef struct FAudioGMS_Device | ||||||
| 
 | 
 | ||||||
| static FAudioGMS_Device* device = NULL; | static FAudioGMS_Device* device = NULL; | ||||||
| 
 | 
 | ||||||
|  | /* Game Maker doesn't let us control execution order on clean up so we have this stupid macro to help us not crash on exit */ | ||||||
|  | #define RETURN_ON_NULL_DEVICE(x) if (device == NULL) { return x; } | ||||||
|  | 
 | ||||||
| static inline FAudioGMS_StaticSound* FAudioGMS_INTERNAL_LookupStaticSound(uint32_t id) | static inline FAudioGMS_StaticSound* FAudioGMS_INTERNAL_LookupStaticSound(uint32_t id) | ||||||
| { | { | ||||||
|     if (id >= 0 && id < device->staticSoundCount) |     if (id >= 0 && id < device->staticSoundCount) | ||||||
|  | @ -516,6 +519,7 @@ static void SetPanMatrixCoefficients(FAudioGMS_SoundInstance *instance) | ||||||
| 
 | 
 | ||||||
| double FAudioGMS_StaticSound_LoadWAV(char *filePath) | double FAudioGMS_StaticSound_LoadWAV(char *filePath) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE(-1.0) | ||||||
|     drwav_uint64 frameCount; |     drwav_uint64 frameCount; | ||||||
| 
 | 
 | ||||||
|     FAudioGMS_StaticSound *sound = SDL_malloc(sizeof(FAudioGMS_StaticSound)); |     FAudioGMS_StaticSound *sound = SDL_malloc(sizeof(FAudioGMS_StaticSound)); | ||||||
|  | @ -670,7 +674,6 @@ static void FAudioGMS_INTERNAL_SoundInstance_SetPitch(FAudioGMS_SoundInstance* i | ||||||
| 
 | 
 | ||||||
| static void FAudioGMS_INTERNAL_SoundInstance_SetVolume(FAudioGMS_SoundInstance* instance, float volume) | static void FAudioGMS_INTERNAL_SoundInstance_SetVolume(FAudioGMS_SoundInstance* instance, float volume) | ||||||
| { | { | ||||||
|     instance->adjustingVolumeOverTime = 0; |  | ||||||
|     instance->volume = volume; |     instance->volume = volume; | ||||||
|     FAudioVoice_SetVolume(instance->handle, volume, 0); |     FAudioVoice_SetVolume(instance->handle, volume, 0); | ||||||
| } | } | ||||||
|  | @ -884,6 +887,7 @@ static void FAudioGMS_INTERNAL_SoundInstance_StreamingUpdate(FAudioGMS_SoundInst | ||||||
| 
 | 
 | ||||||
| double FAudioGMS_StreamingSound_LoadOGG(char* filePath) | double FAudioGMS_StreamingSound_LoadOGG(char* filePath) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE(-1.0) | ||||||
|     int error = 0; |     int error = 0; | ||||||
|     stb_vorbis *fileHandle = stb_vorbis_open_filename(filePath, &error, NULL); |     stb_vorbis *fileHandle = stb_vorbis_open_filename(filePath, &error, NULL); | ||||||
| 
 | 
 | ||||||
|  | @ -999,6 +1003,7 @@ static void FAudioGMS_INTERNAL_SoundInstance_Play(FAudioGMS_SoundInstance* insta | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_StaticSound_PlayOneOff(double staticSoundID, double pan, double pitch, double volume) | void FAudioGMS_StaticSound_PlayOneOff(double staticSoundID, double pan, double pitch, double volume) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID); |     FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID); | ||||||
| 
 | 
 | ||||||
|     if (staticSound != NULL) |     if (staticSound != NULL) | ||||||
|  | @ -1016,6 +1021,7 @@ void FAudioGMS_StaticSound_PlayOneOff(double staticSoundID, double pan, double p | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_StaticSound_PlayOneOffSpatial(double staticSoundID, double x, double y, double z, double pitch, double volume) | void FAudioGMS_StaticSound_PlayOneOffSpatial(double staticSoundID, double x, double y, double z, double pitch, double volume) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID); |     FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID); | ||||||
| 
 | 
 | ||||||
|     if (staticSound != NULL) |     if (staticSound != NULL) | ||||||
|  | @ -1034,6 +1040,7 @@ void FAudioGMS_StaticSound_PlayOneOffSpatial(double staticSoundID, double x, dou | ||||||
| 
 | 
 | ||||||
| double FAudioGMS_StaticSound_Play(double staticSoundID, double pan, double pitch, double volume, double loop) | double FAudioGMS_StaticSound_Play(double staticSoundID, double pan, double pitch, double volume, double loop) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE(-1.0) | ||||||
|     FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID); |     FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID); | ||||||
| 
 | 
 | ||||||
|     if (staticSound != NULL) |     if (staticSound != NULL) | ||||||
|  | @ -1053,6 +1060,7 @@ double FAudioGMS_StaticSound_Play(double staticSoundID, double pan, double pitch | ||||||
| 
 | 
 | ||||||
| double FAudioGMS_StaticSound_PlaySpatial(double staticSoundID, double x, double y, double z, double pitch, double volume, double loop) | double FAudioGMS_StaticSound_PlaySpatial(double staticSoundID, double x, double y, double z, double pitch, double volume, double loop) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE(-1.0) | ||||||
|     FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID); |     FAudioGMS_StaticSound* staticSound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID); | ||||||
| 
 | 
 | ||||||
|     if (staticSound != NULL) |     if (staticSound != NULL) | ||||||
|  | @ -1073,6 +1081,7 @@ double FAudioGMS_StaticSound_PlaySpatial(double staticSoundID, double x, double | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_SoundInstance_Play(double soundInstanceID, double loop) | void FAudioGMS_SoundInstance_Play(double soundInstanceID, double loop) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
| 
 | 
 | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|  | @ -1084,13 +1093,14 @@ void FAudioGMS_SoundInstance_Play(double soundInstanceID, double loop) | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_SoundInstance_Pause(double soundInstanceID) | void FAudioGMS_SoundInstance_Pause(double soundInstanceID) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
| 
 | 
 | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|     { |     { | ||||||
|         if (instance->soundState == SoundState_Playing) |         if (instance->soundState == SoundState_Playing) | ||||||
|         { |         { | ||||||
|             FAudioSourceVoice_Stop(instance->handle, 0, 0); |             FAudioSourceVoice_Stop(instance->handle, 0, 0); /* this actually just pauses lol */ | ||||||
|             instance->soundState = SoundState_Paused; |             instance->soundState = SoundState_Paused; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | @ -1103,14 +1113,15 @@ void FAudioGMS_SoundInstance_Pause(double soundInstanceID) | ||||||
| static void FAudioGMS_INTERNAL_SoundInstance_Stop(FAudioGMS_SoundInstance* instance) | static void FAudioGMS_INTERNAL_SoundInstance_Stop(FAudioGMS_SoundInstance* instance) | ||||||
| { | { | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|     { |  | ||||||
|         if (instance->isStatic) |  | ||||||
|         { |  | ||||||
|             FAudioSourceVoice_ExitLoop(instance->handle, 0); |  | ||||||
|         } |  | ||||||
|         else |  | ||||||
|     { |     { | ||||||
|         FAudioSourceVoice_Stop(instance->handle, 0, 0); |         FAudioSourceVoice_Stop(instance->handle, 0, 0); | ||||||
|  |         FAudioSourceVoice_FlushSourceBuffers(instance->handle); | ||||||
|  | 
 | ||||||
|  |         if (!instance->isStatic) | ||||||
|  |         { | ||||||
|  |             FAudioGMS_INTERNAL_SoundInstance_ClearBuffers(instance); | ||||||
|  |             stb_vorbis_seek_start(instance->soundData.streamingSound.fileHandle); /* back to the start */ | ||||||
|  |             FAudioGMS_INTERNAL_SoundInstance_StreamingUpdate(instance); /* preload so we dont stutter on play */ | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         instance->soundState = SoundState_Stopped; |         instance->soundState = SoundState_Stopped; | ||||||
|  | @ -1123,39 +1134,14 @@ static void FAudioGMS_INTERNAL_SoundInstance_Stop(FAudioGMS_SoundInstance* insta | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_SoundInstance_Stop(double soundInstanceID) | void FAudioGMS_SoundInstance_Stop(double soundInstanceID) | ||||||
| { | { | ||||||
| FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     RETURN_ON_NULL_DEVICE() | ||||||
| FAudioGMS_INTERNAL_SoundInstance_Stop(instance); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static void FAudioGMS_INTERNAL_SoundInstance_StopImmediate(FAudioGMS_SoundInstance* instance) |  | ||||||
| { |  | ||||||
|     if (instance != NULL) |  | ||||||
|     { |  | ||||||
|         FAudioSourceVoice_Stop(instance->handle, 0, 0); |  | ||||||
|         FAudioSourceVoice_FlushSourceBuffers(instance->handle); |  | ||||||
| 
 |  | ||||||
|         if (!instance->isStatic) |  | ||||||
|         { |  | ||||||
|             FAudioGMS_INTERNAL_SoundInstance_ClearBuffers(instance); |  | ||||||
|             FAudioGMS_INTERNAL_SoundInstance_StreamingUpdate(instance); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         instance->soundState = SoundState_Stopped; |  | ||||||
|     } |  | ||||||
|     else |  | ||||||
|     { |  | ||||||
|         Log("SoundInstance_Stop: Invalid sound instance ID! Did you destroy this instance?"); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void FAudioGMS_SoundInstance_StopImmediate(double soundInstanceID) |  | ||||||
| { |  | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
|     FAudioGMS_INTERNAL_SoundInstance_StopImmediate(instance); |     FAudioGMS_INTERNAL_SoundInstance_Stop(instance); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_SoundInstance_SetPan(double soundInstanceID, double pan) | void FAudioGMS_SoundInstance_SetPan(double soundInstanceID, double pan) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
| 
 | 
 | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|  | @ -1166,6 +1152,7 @@ void FAudioGMS_SoundInstance_SetPan(double soundInstanceID, double pan) | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_SoundInstance_SetPitch(double soundInstanceID, double pitch) | void FAudioGMS_SoundInstance_SetPitch(double soundInstanceID, double pitch) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
| 
 | 
 | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|  | @ -1176,8 +1163,10 @@ void FAudioGMS_SoundInstance_SetPitch(double soundInstanceID, double pitch) | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_SoundInstance_SetVolume(double soundInstanceID, double volume) | void FAudioGMS_SoundInstance_SetVolume(double soundInstanceID, double volume) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
| 
 | 
 | ||||||
|  |     instance->adjustingVolumeOverTime = 0; /* override volume adjustment over time */ | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|     { |     { | ||||||
|         FAudioGMS_INTERNAL_SoundInstance_SetVolume(instance, volume); |         FAudioGMS_INTERNAL_SoundInstance_SetVolume(instance, volume); | ||||||
|  | @ -1186,6 +1175,7 @@ void FAudioGMS_SoundInstance_SetVolume(double soundInstanceID, double volume) | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_SoundInstance_Set3DPosition(double soundInstanceID, double x, double y, double z) | void FAudioGMS_SoundInstance_Set3DPosition(double soundInstanceID, double x, double y, double z) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
| 
 | 
 | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|  | @ -1208,6 +1198,7 @@ void FAudioGMS_SoundInstance_Set3DPosition(double soundInstanceID, double x, dou | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_SoundInstance_SetTrackPosition(double soundInstanceID, double trackPositionInSeconds) | void FAudioGMS_SoundInstance_SetTrackPosition(double soundInstanceID, double trackPositionInSeconds) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
| 
 | 
 | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|  | @ -1217,7 +1208,7 @@ void FAudioGMS_SoundInstance_SetTrackPosition(double soundInstanceID, double tra | ||||||
|         FAudioGMS_SoundState currentState = instance->soundState; |         FAudioGMS_SoundState currentState = instance->soundState; | ||||||
|         if (currentState == SoundState_Playing) |         if (currentState == SoundState_Playing) | ||||||
|         { |         { | ||||||
|             FAudioGMS_INTERNAL_SoundInstance_StopImmediate(instance); |             FAudioGMS_INTERNAL_SoundInstance_Stop(instance); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (instance->isStatic) |         if (instance->isStatic) | ||||||
|  | @ -1238,6 +1229,7 @@ void FAudioGMS_SoundInstance_SetTrackPosition(double soundInstanceID, double tra | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_SoundInstance_SetVolumeOverTime(double soundInstanceID, double volume, double milliseconds) | void FAudioGMS_SoundInstance_SetVolumeOverTime(double soundInstanceID, double volume, double milliseconds) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID);\ |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID);\ | ||||||
| 
 | 
 | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|  | @ -1250,6 +1242,7 @@ void FAudioGMS_SoundInstance_SetVolumeOverTime(double soundInstanceID, double vo | ||||||
| 
 | 
 | ||||||
| double FAudioGMS_SoundInstance_GetPitch(double soundInstanceID) | double FAudioGMS_SoundInstance_GetPitch(double soundInstanceID) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE(-1.0) | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
| 
 | 
 | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|  | @ -1265,6 +1258,7 @@ double FAudioGMS_SoundInstance_GetPitch(double soundInstanceID) | ||||||
| 
 | 
 | ||||||
| double FAudioGMS_SoundInstance_GetVolume(double soundInstanceID) | double FAudioGMS_SoundInstance_GetVolume(double soundInstanceID) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE(-1.0) | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
| 
 | 
 | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|  | @ -1280,6 +1274,7 @@ double FAudioGMS_SoundInstance_GetVolume(double soundInstanceID) | ||||||
| 
 | 
 | ||||||
| double FAudioGMS_SoundInstance_GetTrackLengthInSeconds(double soundInstanceID) | double FAudioGMS_SoundInstance_GetTrackLengthInSeconds(double soundInstanceID) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE(-1.0) | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
| 
 | 
 | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|  | @ -1302,6 +1297,7 @@ double FAudioGMS_SoundInstance_GetTrackLengthInSeconds(double soundInstanceID) | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_SetListenerPosition(double x, double y, double z) | void FAudioGMS_SetListenerPosition(double x, double y, double z) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     device->listener.Velocity.x = x - device->listener.Position.x; |     device->listener.Velocity.x = x - device->listener.Position.x; | ||||||
|     device->listener.Velocity.y = y - device->listener.Position.y; |     device->listener.Velocity.y = y - device->listener.Position.y; | ||||||
|     device->listener.Velocity.z = z - device->listener.Position.z; |     device->listener.Velocity.z = z - device->listener.Position.z; | ||||||
|  | @ -1317,7 +1313,7 @@ static void FAudioGMS_INTERNAL_SoundInstance_Destroy(FAudioGMS_SoundInstance* in | ||||||
|     { |     { | ||||||
|         device->soundInstances[instance->id] = NULL; |         device->soundInstances[instance->id] = NULL; | ||||||
|         IdStack_Push(&device->soundInstanceIndexStack, instance->id); |         IdStack_Push(&device->soundInstanceIndexStack, instance->id); | ||||||
|         FAudioGMS_INTERNAL_SoundInstance_StopImmediate(instance); |         FAudioGMS_INTERNAL_SoundInstance_Stop(instance); | ||||||
|         FAudioVoice_DestroyVoice(instance->handle); |         FAudioVoice_DestroyVoice(instance->handle); | ||||||
|         if (!instance->isStatic) |         if (!instance->isStatic) | ||||||
|         { |         { | ||||||
|  | @ -1335,6 +1331,7 @@ static void FAudioGMS_INTERNAL_SoundInstance_Destroy(FAudioGMS_SoundInstance* in | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_SoundInstance_Destroy(double soundInstanceID) | void FAudioGMS_SoundInstance_Destroy(double soundInstanceID) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
| 
 | 
 | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|  | @ -1345,6 +1342,7 @@ void FAudioGMS_SoundInstance_Destroy(double soundInstanceID) | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_SoundInstance_DestroyWhenFinished(double soundInstanceID) | void FAudioGMS_SoundInstance_DestroyWhenFinished(double soundInstanceID) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance* instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
| 
 | 
 | ||||||
|     if (instance != NULL) |     if (instance != NULL) | ||||||
|  | @ -1353,7 +1351,7 @@ void FAudioGMS_SoundInstance_DestroyWhenFinished(double soundInstanceID) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* FIXME: this will die horribly if a sound is playing */ | /* NOTE: this will die horribly if a sound is playing */ | ||||||
| static void FAudioGMS_INTERNAL_StaticSound_Destroy(FAudioGMS_StaticSound* sound) | static void FAudioGMS_INTERNAL_StaticSound_Destroy(FAudioGMS_StaticSound* sound) | ||||||
| { | { | ||||||
|     if (sound != NULL) |     if (sound != NULL) | ||||||
|  | @ -1367,12 +1365,14 @@ static void FAudioGMS_INTERNAL_StaticSound_Destroy(FAudioGMS_StaticSound* sound) | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_StaticSound_Destroy(double staticSoundID) | void FAudioGMS_StaticSound_Destroy(double staticSoundID) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_StaticSound *sound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID); |     FAudioGMS_StaticSound *sound = FAudioGMS_INTERNAL_LookupStaticSound((uint32_t)staticSoundID); | ||||||
|     FAudioGMS_INTERNAL_StaticSound_Destroy(sound); |     FAudioGMS_INTERNAL_StaticSound_Destroy(sound); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| double FAudioGMS_EffectChain_Create() | double FAudioGMS_EffectChain_Create() | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE(-1.0) | ||||||
|     FAudioGMS_EffectChain* effectChain = SDL_malloc(sizeof(FAudioGMS_EffectChain)); |     FAudioGMS_EffectChain* effectChain = SDL_malloc(sizeof(FAudioGMS_EffectChain)); | ||||||
| 
 | 
 | ||||||
|     effectChain->fAudioEffectChain.EffectCount = 0; |     effectChain->fAudioEffectChain.EffectCount = 0; | ||||||
|  | @ -1420,6 +1420,7 @@ static void FAudioGMS_INTERNAL_EffectChain_AddReverb(FAudioGMS_EffectChain* effe | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_EffectChain_AddDefaultReverb(double effectChainID) | void FAudioGMS_EffectChain_AddDefaultReverb(double effectChainID) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_EffectChain *effectChain = FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); |     FAudioGMS_EffectChain *effectChain = FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||||
| 
 | 
 | ||||||
|     if (effectChain != NULL) |     if (effectChain != NULL) | ||||||
|  | @ -1471,6 +1472,7 @@ void FAudioGMS_EffectChain_AddReverb( | ||||||
|     double density, |     double density, | ||||||
|     double roomSize |     double roomSize | ||||||
| ) { | ) { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_EffectChain* effectChain = FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); |     FAudioGMS_EffectChain* effectChain = FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||||
| 
 | 
 | ||||||
|     if (effectChain != NULL) |     if (effectChain != NULL) | ||||||
|  | @ -1506,6 +1508,7 @@ void FAudioGMS_EffectChain_AddReverb( | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_SoundInstance_SetEffectChain(double soundInstanceID, double effectChainID, double effectGain) | void FAudioGMS_SoundInstance_SetEffectChain(double soundInstanceID, double effectChainID, double effectGain) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_SoundInstance *instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); |     FAudioGMS_SoundInstance *instance = FAudioGMS_INTERNAL_LookupSoundInstance((uint32_t)soundInstanceID); | ||||||
|     FAudioGMS_EffectChain *effectChain = FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); |     FAudioGMS_EffectChain *effectChain = FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||||
|     uint32_t i; |     uint32_t i; | ||||||
|  | @ -1612,6 +1615,7 @@ static void FAudioGMS_INTERNAL_EffectChain_Destroy(FAudioGMS_EffectChain *effect | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_EffectChain_Destroy(double effectChainID) | void FAudioGMS_EffectChain_Destroy(double effectChainID) | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     FAudioGMS_EffectChain *effectChain = FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); |     FAudioGMS_EffectChain *effectChain = FAudioGMS_INTERNAL_LookupEffectChain((uint32_t)effectChainID); | ||||||
| 
 | 
 | ||||||
|     if (effectChain != NULL) |     if (effectChain != NULL) | ||||||
|  | @ -1622,6 +1626,7 @@ void FAudioGMS_EffectChain_Destroy(double effectChainID) | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_Update() | void FAudioGMS_Update() | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     uint32_t i; |     uint32_t i; | ||||||
| 
 | 
 | ||||||
|     for (i = 0; i < device->soundInstanceCount; i += 1) |     for (i = 0; i < device->soundInstanceCount; i += 1) | ||||||
|  | @ -1684,16 +1689,18 @@ void FAudioGMS_Update() | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_StopAll() | void FAudioGMS_StopAll() | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     uint32_t i; |     uint32_t i; | ||||||
| 
 | 
 | ||||||
|     for (i = 0; i < device->soundInstanceCount; i += 1) |     for (i = 0; i < device->soundInstanceCount; i += 1) | ||||||
|     { |     { | ||||||
|         FAudioGMS_INTERNAL_SoundInstance_StopImmediate(device->soundInstances[i]); |         FAudioGMS_INTERNAL_SoundInstance_Stop(device->soundInstances[i]); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void FAudioGMS_Destroy() | void FAudioGMS_Destroy() | ||||||
| { | { | ||||||
|  |     RETURN_ON_NULL_DEVICE() | ||||||
|     uint32_t i; |     uint32_t i; | ||||||
| 
 | 
 | ||||||
|     for (i = 0; i < device->soundInstanceCount; i += 1) |     for (i = 0; i < device->soundInstanceCount; i += 1) | ||||||
|  |  | ||||||
|  | @ -53,7 +53,6 @@ FAUDIOGMSAPI double FAudioGMS_StreamingSound_LoadOGG(char* filepath); /* returns | ||||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_Play(double soundInstanceID, double loop); | FAUDIOGMSAPI void FAudioGMS_SoundInstance_Play(double soundInstanceID, double loop); | ||||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_Pause(double soundInstanceID); | FAUDIOGMSAPI void FAudioGMS_SoundInstance_Pause(double soundInstanceID); | ||||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_Stop(double soundInstanceID); | FAUDIOGMSAPI void FAudioGMS_SoundInstance_Stop(double soundInstanceID); | ||||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_StopImmediate(double soundInstanceID); |  | ||||||
| 
 | 
 | ||||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPan(double soundInstanceID, double pan); | FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPan(double soundInstanceID, double pan); | ||||||
| FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPitch(double soundInstanceID, double pitch); | FAUDIOGMSAPI void FAudioGMS_SoundInstance_SetPitch(double soundInstanceID, double pitch); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue