NDSP: some more safety checks and fixes
This commit is contained in:
parent
b3e6a64596
commit
8cc5dec1b2
@ -278,10 +278,12 @@ static void ndspFinalize(bool suspend)
|
||||
bool ready;
|
||||
DSP_RecvDataIsReady(0, &ready);
|
||||
if (ready)
|
||||
{
|
||||
DSP_RecvData(0, &val);
|
||||
if (val == 1)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (suspend)
|
||||
memcpy(dspVar5Backup, ndspVars[5][0], sizeof(dspVar5Backup));
|
||||
|
||||
@ -464,7 +466,8 @@ Result ndspInit(void)
|
||||
if (rc==0)
|
||||
{
|
||||
u8 outMode;
|
||||
CFGU_GetConfigInfoBlk2(sizeof(outMode), 0x70001, &outMode);
|
||||
rc = CFGU_GetConfigInfoBlk2(sizeof(outMode), 0x70001, &outMode);
|
||||
if (rc==0)
|
||||
ndspMaster.outputMode = outMode;
|
||||
exitCfgu();
|
||||
}
|
||||
@ -502,14 +505,20 @@ _fail0:
|
||||
|
||||
void ndspExit(void)
|
||||
{
|
||||
if (!ndspRefCount) return;
|
||||
if (--ndspRefCount) return;
|
||||
if (!bDspReady) return;
|
||||
ndspThreadRun = false;
|
||||
if (bSleeping)
|
||||
svcSignalEvent(sleepEvent);
|
||||
svcWaitSynchronization(ndspThread, U64_MAX);
|
||||
svcCloseHandle(ndspThread);
|
||||
svcCloseHandle(sleepEvent);
|
||||
aptUnhook(&aptCookie);
|
||||
if (!bSleeping)
|
||||
ndspFinalize(false);
|
||||
bSleeping = false;
|
||||
bNeedsSync = false;
|
||||
dspExit();
|
||||
if (componentFree)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user