diff --git a/Core/HLE/sceAudio.cpp b/Core/HLE/sceAudio.cpp index df343aa0bd..6046b749be 100644 --- a/Core/HLE/sceAudio.cpp +++ b/Core/HLE/sceAudio.cpp @@ -110,7 +110,10 @@ u32 sceAudioOutputPannedBlocking(u32 chan, int leftvol, int rightvol, u32 sample chans[chan].rightVolume = rightvol; } chans[chan].sampleAddress = samplePtr; - return __AudioEnqueue(chans[chan], chan, true); + int ret = __AudioEnqueue(chans[chan], chan, true); + if (chans[chan].waitingThreads.size() == 0) + return hleDelayResult(ret, "output block", 1000); + return ret; } } @@ -321,7 +324,10 @@ u32 sceAudioOutput2OutputBlocking(u32 vol, u32 dataPtr){ chans[PSP_AUDIO_CHANNEL_OUTPUT2].leftVolume = vol; chans[PSP_AUDIO_CHANNEL_OUTPUT2].rightVolume = vol; chans[PSP_AUDIO_CHANNEL_OUTPUT2].sampleAddress = dataPtr; - return __AudioEnqueue(chans[PSP_AUDIO_CHANNEL_OUTPUT2], PSP_AUDIO_CHANNEL_OUTPUT2, true); + int ret = __AudioEnqueue(chans[PSP_AUDIO_CHANNEL_OUTPUT2], PSP_AUDIO_CHANNEL_OUTPUT2, true); + if (chans[PSP_AUDIO_CHANNEL_OUTPUT2].waitingThreads.size() == 0) + return hleDelayResult(ret, "output block", 1000); + return ret; } u32 sceAudioOutput2ChangeLength(u32 sampleCount){