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