mirror of https://github.com/mgba-emu/mgba.git
SDL: Fix SDL audio in some cases
This commit is contained in:
parent
51896cdcd6
commit
d8b7452526
|
@ -117,8 +117,8 @@ static THREAD_ENTRY _GBAThreadRun(void* context) {
|
|||
GBACreate(&gba);
|
||||
ARMSetComponents(&cpu, &gba.d, numComponents, components);
|
||||
ARMInit(&cpu);
|
||||
threadContext->gba = &gba;
|
||||
gba.sync = &threadContext->sync;
|
||||
threadContext->gba = &gba;
|
||||
gba.logLevel = threadContext->logLevel;
|
||||
#ifdef USE_PTHREADS
|
||||
pthread_setspecific(_contextKey, threadContext);
|
||||
|
|
|
@ -25,8 +25,6 @@
|
|||
|
||||
static bool _GBASDLInit(struct SDLSoftwareRenderer* renderer);
|
||||
static void _GBASDLDeinit(struct SDLSoftwareRenderer* renderer);
|
||||
static void _GBASDLStart(struct GBAThread* context);
|
||||
static void _GBASDLClean(struct GBAThread* context);
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
struct SDLSoftwareRenderer renderer;
|
||||
|
|
|
@ -53,11 +53,15 @@ void GBASDLResumeAudio(struct GBASDLAudio* context) {
|
|||
|
||||
static void _GBASDLAudioCallback(void* context, Uint8* data, int len) {
|
||||
struct GBASDLAudio* audioContext = context;
|
||||
if (!context || !audioContext->thread) {
|
||||
if (!context || !audioContext->thread || !audioContext->thread->gba) {
|
||||
memset(data, 0, len);
|
||||
return;
|
||||
}
|
||||
audioContext->ratio = GBAAudioCalculateRatio(&audioContext->thread->gba->audio, audioContext->thread->fpsTarget, audioContext->obtainedSpec.freq);
|
||||
if (audioContext->ratio == INFINITY) {
|
||||
memset(data, 0, len);
|
||||
return;
|
||||
}
|
||||
struct GBAStereoSample* ssamples = (struct GBAStereoSample*) data;
|
||||
len /= 2 * audioContext->obtainedSpec.channels;
|
||||
if (audioContext->obtainedSpec.channels == 2) {
|
||||
|
|
Loading…
Reference in New Issue