diff --git a/src/Audio.c b/src/Audio.c index 3e074e8b2..7c4bc9419 100644 --- a/src/Audio.c +++ b/src/Audio.c @@ -178,6 +178,8 @@ static cc_bool AudioBackend_Init(void) { return true; } +void AudioBackend_Tick(void) { } + static void AudioBackend_Free(void) { if (!audio_device) return; _alcMakeContextCurrent(NULL); @@ -399,7 +401,9 @@ struct AudioContext { int count, channels, sampleRate; cc_uint32 _tmpSize; void* _tmpData; }; + static cc_bool AudioBackend_Init(void) { return true; } +void AudioBackend_Tick(void) { } static void AudioBackend_Free(void) { } #define AUDIO_HAS_BACKEND @@ -609,6 +613,8 @@ static cc_bool AudioBackend_Init(void) { return true; } +void AudioBackend_Tick(void) { } + static void AudioBackend_Free(void) { if (slOutputObject) { (*slOutputObject)->Destroy(slOutputObject); @@ -794,6 +800,9 @@ static cc_bool AudioBackend_Init(void) { ndspSetOutputMode(NDSP_OUTPUT_STEREO); return result == 0; } + +void AudioBackend_Tick(void) { } + static void AudioBackend_Free(void) { } #define AUDIO_HAS_BACKEND @@ -1183,6 +1192,8 @@ static cc_bool AudioBackend_Init(void) { return snd_stream_init() == 0; } +void AudioBackend_Tick(void) { } + static void AudioBackend_Free(void) { snd_stream_shutdown(); } @@ -1321,6 +1332,10 @@ static cc_bool AudioBackend_Init(void) { return true; } +void AudioBackend_Tick(void) { } + +static void AudioBackend_Free(void) { } + void Audio_Init(struct AudioContext* ctx, int buffers) { } void Audio_Close(struct AudioContext* ctx) { if (ctx->contextID) interop_AudioClose(ctx->contextID); @@ -1368,13 +1383,19 @@ void Audio_AllocChunks(cc_uint32 size, void** chunks, int numChunks) { void Audio_FreeChunks(void** chunks, int numChunks) { AudioBase_FreeChunks(chunks, numChunks); } +#else +/*########################################################################################################################* +*----------------------------------------------------Null/Empty backend---------------------------------------------------* +*#########################################################################################################################*/ +void AudioBackend_Tick(void) { } +static void AudioBackend_Free(void) { } #endif /*########################################################################################################################* *---------------------------------------------------Common backend code---------------------------------------------------* *#########################################################################################################################*/ #ifndef AUDIO_HAS_BACKEND -static void AudioBackend_Free(void) { } + #else static void AudioBase_Clear(struct AudioContext* ctx) { ctx->count = 0; diff --git a/src/Audio.h b/src/Audio.h index ec5d8c3ac..ca8481dca 100644 --- a/src/Audio.h +++ b/src/Audio.h @@ -41,6 +41,8 @@ void Audio_PlayDigSound(cc_uint8 type); void Audio_PlayStepSound(cc_uint8 type); #define AUDIO_MAX_BUFFERS 4 +void AudioBackend_Tick(void); + /* Initialises an audio context. */ void Audio_Init(struct AudioContext* ctx, int buffers); /* Stops any playing audio and then frees the audio context. */ diff --git a/src/Game.c b/src/Game.c index f3ae75728..f6ef6de50 100644 --- a/src/Game.c +++ b/src/Game.c @@ -621,6 +621,7 @@ static void Game_RenderFrame(double delta) { /* NOTE: EnvRenderer_UpdateFog also also sets clear color */ EnvRenderer_UpdateFog(); UpdateViewMatrix(); + AudioBackend_Tick(); /* TODO: Not calling Gfx_EndFrame doesn't work with Direct3D9 */ if (Window_Main.Inactive) return;