diff --git a/apu/apu.cpp b/apu/apu.cpp index d5aabc89..8450e4fd 100644 --- a/apu/apu.cpp +++ b/apu/apu.cpp @@ -758,6 +758,16 @@ static inline void S9xAPUUpdateClock (void) S9xAPUSetReferenceTime(CPU.Cycles); } +void S9xAPUWait (void) +{ +#ifdef USE_THREADS + if (spc::using_threads) + { + S9xAPUThreadWait(); + } +#endif +} + uint8 S9xAPUReadPort (int port) { #ifdef USE_THREADS diff --git a/apu/apu.h b/apu/apu.h index f1462a0f..144747b9 100644 --- a/apu/apu.h +++ b/apu/apu.h @@ -230,5 +230,6 @@ void S9xClearSamples (void); bool8 S9xMixSamples (uint8 *, int); void S9xSetSamplesAvailableCallback (apu_callback, void *); void S9xUpdateDynamicRate (int, int); +void S9xAPUWait (void); #endif diff --git a/cpuexec.cpp b/cpuexec.cpp index c2c562da..0bb4256f 100644 --- a/cpuexec.cpp +++ b/cpuexec.cpp @@ -319,9 +319,12 @@ void S9xMainLoop (void) #ifdef DEBUGGER if (!(CPU.Flags & FRAME_ADVANCE_FLAG)) #endif + S9xAPUWait(); S9xSyncSpeed(); CPU.Flags &= ~SCAN_KEYS_FLAG; } + + } static inline void S9xReschedule (void)