Use TerminateTitle rather than relying on XamLoader* being called from the main thread.
This commit is contained in:
parent
ff72a25260
commit
82986c6eec
|
@ -312,6 +312,7 @@ void KernelState::TerminateTitle(bool from_guest_thread) {
|
||||||
|
|
||||||
if (from_guest_thread && XThread::IsInThread(thread)) {
|
if (from_guest_thread && XThread::IsInThread(thread)) {
|
||||||
// Don't terminate ourselves.
|
// Don't terminate ourselves.
|
||||||
|
++it;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -336,6 +337,8 @@ void KernelState::TerminateTitle(bool from_guest_thread) {
|
||||||
user_modules_.clear();
|
user_modules_.clear();
|
||||||
|
|
||||||
if (from_guest_thread) {
|
if (from_guest_thread) {
|
||||||
|
threads_by_id_.erase(XThread::GetCurrentThread()->thread_id());
|
||||||
|
|
||||||
// Now commit suicide (using Terminate, because we can't call into guest
|
// Now commit suicide (using Terminate, because we can't call into guest
|
||||||
// code anymore)
|
// code anymore)
|
||||||
// Also, manually invoke the lock guard's destructor, because Terminate
|
// Also, manually invoke the lock guard's destructor, because Terminate
|
||||||
|
|
|
@ -170,13 +170,13 @@ void XamLoaderLaunchTitle(lpstring_t raw_name, dword_t flags) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// This function does not return.
|
// This function does not return.
|
||||||
XThread::GetCurrentThread()->Exit(0);
|
kernel_state()->TerminateTitle(true);
|
||||||
}
|
}
|
||||||
DECLARE_XAM_EXPORT(XamLoaderLaunchTitle, ExportTag::kSketchy);
|
DECLARE_XAM_EXPORT(XamLoaderLaunchTitle, ExportTag::kSketchy);
|
||||||
|
|
||||||
void XamLoaderTerminateTitle() {
|
void XamLoaderTerminateTitle() {
|
||||||
// This function does not return.
|
// This function does not return.
|
||||||
XThread::GetCurrentThread()->Exit(0);
|
kernel_state()->TerminateTitle(true);
|
||||||
}
|
}
|
||||||
DECLARE_XAM_EXPORT(XamLoaderTerminateTitle, ExportTag::kSketchy);
|
DECLARE_XAM_EXPORT(XamLoaderTerminateTitle, ExportTag::kSketchy);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue