Merge branch 'ClassiCube:master' into switch

This commit is contained in:
Headshotnoby 2024-03-14 22:12:48 -04:00 committed by GitHub
commit e1d830064c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 25 additions and 1 deletions

View File

@ -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;

View File

@ -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. */

View File

@ -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;