These are actually okay, happen on the second cb.

This commit is contained in:
Unknown W. Brackets 2013-03-30 15:59:14 -07:00
parent 2ecc3157de
commit 52a8997006
2 changed files with 9 additions and 3 deletions

View file

@ -282,8 +282,10 @@ void __KernelMutexBeginCallback(SceUID threadID, SceUID prevCallbackId)
Mutex *mutex = mutexID == 0 ? NULL : kernelObjects.Get<Mutex>(mutexID, error);
if (mutex)
{
// This means two callbacks in a row. PSP crashes if the same callback runs inside itself.
// TODO: Handle this better?
if (mutex->pausedWaitTimeouts.find(pauseKey) != mutex->pausedWaitTimeouts.end())
WARN_LOG_REPORT(HLE, "sceKernelLockMutexCB: Callback %08x triggered within itself, should not happen (PSP crashes.)", prevCallbackId);
return;
if (timeoutPtr != 0 && mutexWaitTimer != -1)
{
@ -923,8 +925,10 @@ void __KernelLwMutexBeginCallback(SceUID threadID, SceUID prevCallbackId)
LwMutex *mutex = mutexID == 0 ? NULL : kernelObjects.Get<LwMutex>(mutexID, error);
if (mutex)
{
// This means two callbacks in a row. PSP crashes if the same callback runs inside itself.
// TODO: Handle this better?
if (mutex->pausedWaitTimeouts.find(pauseKey) != mutex->pausedWaitTimeouts.end())
WARN_LOG_REPORT(HLE, "sceKernelLockLwMutexCB: Callback %08x triggered within itself, should not happen (PSP crashes.)", prevCallbackId);
return;
if (timeoutPtr != 0 && lwMutexWaitTimer != -1)
{