detect audio spec changes

This commit is contained in:
tildearrow 2025-05-12 14:47:52 -05:00
parent ef1860cad8
commit 4bb2e8857d
2 changed files with 9 additions and 0 deletions

View file

@ -27,6 +27,12 @@ void taSDLProcess(void* inst, unsigned char* buf, int nframes) {
} }
void TAAudioSDL::onProcess(unsigned char* buf, int nframes) { void TAAudioSDL::onProcess(unsigned char* buf, int nframes) {
if (memcmp(&arCopy,&ar,sizeof(SDL_AudioSpec))!=0) {
logE("AUDIO SPEC HAS CHANGED!!!");
#ifdef _WIN32
MessageBox(NULL,"AUDIO SPEC HAS CHANGED!!!","Furnace",MB_OK|MB_ICONERROR);
#endif
}
if (audioProcCallback!=NULL) { if (audioProcCallback!=NULL) {
if (midiIn!=NULL) midiIn->gather(); if (midiIn!=NULL) midiIn->gather();
audioProcCallback(audioProcCallbackUser,inBufs,outBufs,desc.inChans,desc.outChans,desc.bufsize); audioProcCallback(audioProcCallbackUser,inBufs,outBufs,desc.inChans,desc.outChans,desc.bufsize);
@ -135,6 +141,8 @@ bool TAAudioSDL::init(TAAudioDesc& request, TAAudioDesc& response) {
return false; return false;
} }
memcpy(&arCopy,&ar,sizeof(SDL_AudioSpec));
const char* backendName=SDL_GetCurrentAudioDriver(); const char* backendName=SDL_GetCurrentAudioDriver();
desc.deviceName=request.deviceName; desc.deviceName=request.deviceName;

View file

@ -22,6 +22,7 @@
class TAAudioSDL: public TAAudio { class TAAudioSDL: public TAAudio {
SDL_AudioSpec ac, ar; SDL_AudioSpec ac, ar;
SDL_AudioSpec arCopy;
SDL_AudioDeviceID ai; SDL_AudioDeviceID ai;
bool audioSysStarted; bool audioSysStarted;