From eb5c22bbae04a9f2b4944325cb2960fd81b66ac4 Mon Sep 17 00:00:00 2001 From: shenweip <1037567878@qq.com> Date: Tue, 27 Oct 2020 19:50:27 +0800 Subject: [PATCH] SaveState:Don't register the event during Dostate. --- Core/HLE/sceUsbMic.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/Core/HLE/sceUsbMic.cpp b/Core/HLE/sceUsbMic.cpp index 39a6903f6d..a714be9230 100644 --- a/Core/HLE/sceUsbMic.cpp +++ b/Core/HLE/sceUsbMic.cpp @@ -74,6 +74,8 @@ static void __UsbMicAudioUpdate(u64 userdata, int cyclesLate) { isNeedInput = false; } else { u64 waitTimeus = (waitingThread.needSize - Microphone::availableAudioBufSize()) * 1000000 / 2 / waitingThread.sampleRate; + if(eventUsbMicAudioUpdate == -1) + eventUsbMicAudioUpdate = CoreTiming::RegisterEvent("UsbMicAudioUpdate", &__UsbMicAudioUpdate); CoreTiming::ScheduleEvent(usToCycles(waitTimeus), eventUsbMicAudioUpdate, userdata); } } else { @@ -138,13 +140,6 @@ void __UsbMicDoState(PointerWrap &p) { if (!audioBuf && numNeedSamples > 0) { audioBuf = new QueueBuf(numNeedSamples << 1); } - if(eventUsbMicAudioUpdate = -1) - eventUsbMicAudioUpdate = CoreTiming::RegisterEvent("UsbMicAudioUpdate", &__UsbMicAudioUpdate); - // Maybe also need to save the state of audioBuf. - if (waitingThreads.size() != 0 && p.mode == PointerWrap::MODE_READ) { - u64 waitTimeus = (waitingThreads[0].needSize - Microphone::availableAudioBufSize()) * 1000000 / 2 / waitingThreads[0].sampleRate; - CoreTiming::ScheduleEvent(usToCycles(waitTimeus), eventUsbMicAudioUpdate, waitingThreads[0].threadID); - } if (micState == 0) { if (Microphone::isMicStarted()) @@ -415,6 +410,8 @@ u32 __MicInputBlocking(u32 maxSamples, u32 sampleRate, u32 bufAddr) { waitTimeus = (size - Microphone::availableAudioBufSize()) * 1000000 / 2 / sampleRate; isNeedInput = true; } + if(eventUsbMicAudioUpdate == -1) + eventUsbMicAudioUpdate = CoreTiming::RegisterEvent("UsbMicAudioUpdate", &__UsbMicAudioUpdate); CoreTiming::ScheduleEvent(usToCycles(waitTimeus), eventUsbMicAudioUpdate, __KernelGetCurThread()); MicWaitInfo waitInfo = { __KernelGetCurThread(), bufAddr, size, sampleRate }; std::unique_lock lock(wtMutex);