MCPcopy Create free account
hub / github.com/devkitPro/libctru / ndspFinalize

Function ndspFinalize

libctru/source/ndsp/ndsp.c:301–334  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

299}
300
301static void ndspFinalize(bool suspend)
302{
303 u16 val = suspend ? 3 : 1;
304 DSP_WriteProcessPipe(2, &val, 4);
305
306 for (;;)
307 {
308 bool ready = false;
309 DSP_RecvDataIsReady(0, &ready);
310 if (ready)
311 {
312 val = 0;
313 DSP_RecvData(0, &val);
314 if (val == 1)
315 break;
316 }
317 svcSleepThread(4888000); // 4.888ms (approx. one sound frame)
318 }
319
320 if (suspend)
321 memcpy(dspVar5Backup, ndspVars[5][0], sizeof(dspVar5Backup));
322
323 LightLock_Lock(&ndspMutex);
324 bDspReady = false;
325
326 svcCloseHandle(irqEvent);
327 irqEvent = 0;
328 DSP_RegisterInterruptEvents(0, DSP_INTERRUPT_PIPE, 2);
329
330 svcCloseHandle(dspSem);
331 dspSem = 0;
332
333 LightLock_Unlock(&ndspMutex);
334}
335
336static void ndspHookCallback(DSP_HookType hook)
337{

Callers 3

ndspHookCallbackFunction · 0.85
ndspInitFunction · 0.85
ndspExitFunction · 0.85

Calls 6

DSP_WriteProcessPipeFunction · 0.85
DSP_RecvDataIsReadyFunction · 0.85
DSP_RecvDataFunction · 0.85
LightLock_LockFunction · 0.85
LightLock_UnlockFunction · 0.85

Tested by

no test coverage detected