Get rid of the "root" return hack.

This commit is contained in:
Unknown W. Brackets 2013-05-26 10:36:18 -07:00
parent c34854ead3
commit 727b3b4127
2 changed files with 8 additions and 5 deletions

View File

@ -1170,7 +1170,14 @@ void __KernelReturnFromModuleFunc()
{
// Return from the thread as normal.
__KernelReturnFromThread();
// TODO: sceKernelGetThreadExitStatus, __KernelGetCurThreadModuleId()
SceUID leftModuleID = __KernelGetCurThreadModuleId();
SceUID leftThreadID = __KernelGetCurThread();
int exitStatus = sceKernelGetThreadExitStatus(leftThreadID);
// Reschedule immediately (to leave the thread) and delete it and its stack.
__KernelReSchedule("returned from module");
sceKernelDeleteThread(leftThreadID);
}
struct GetModuleIdByAddressArg

View File

@ -2010,10 +2010,6 @@ void __KernelReturnFromThread()
_dbg_assert_msg_(HLE, thread != NULL, "Returned from a NULL thread.");
INFO_LOG(HLE,"__KernelReturnFromThread: %d", exitStatus);
// TEMPORARY HACK: kill the stack of the root thread early:
if (!strcmp(thread->GetName(), "root")) {
thread->FreeStack();
}
thread->nt.exitStatus = exitStatus;
__KernelChangeReadyState(thread, currentThread, false);