diff options
author | Thog <me@thog.eu> | 2019-12-26 02:50:17 +0100 |
---|---|---|
committer | Ac_K <Acoustik666@gmail.com> | 2019-12-26 02:50:17 +0100 |
commit | 55c956e2ec83b2b7f414688c4fe4ed9f1f316935 (patch) | |
tree | a543fffefd7b014d6f4a7c5688040e68edcbe018 /Ryujinx.HLE/HOS/Kernel/Process/KHandleTable.cs | |
parent | 87bfe681ef65ed692aa1e46e3f5f8229013cf46a (diff) |
Make HLE disposable safely (#850)
* Make HLE disposable safely
This fix the oldest issue with the HLE code: the kernel side
disposability.
Changelog:
- Implement KProcess::UnpauseAndTerminateAllThreadsExcept, KThread::Terminate, KThread::TerminateCurrentProcess, KThread::PrepareForTermiation and the svc post handler accurately.
- Implement svcTerminateProcess and svcExitProcess. (both untested)
- Fix KHandleTable::Destroy not decrementing refcount of all objects stored in the table.
- Spawn a custom KProcess with the maximum priority to terminate every guest KProcess. (terminating kernel emulation safely)
- General system stability improvements to enhance the user's experience.
* Fix a typo in a comment in KProcess.cs
* Address gdk's comments
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/Process/KHandleTable.cs')
-rw-r--r-- | Ryujinx.HLE/HOS/Kernel/Process/KHandleTable.cs | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/Process/KHandleTable.cs b/Ryujinx.HLE/HOS/Kernel/Process/KHandleTable.cs index 88c2e690..e9dd14b2 100644 --- a/Ryujinx.HLE/HOS/Kernel/Process/KHandleTable.cs +++ b/Ryujinx.HLE/HOS/Kernel/Process/KHandleTable.cs @@ -272,6 +272,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process disposableObj.Dispose(); } + entry.Obj.DecrementReferenceCount(); entry.Obj = null; entry.Next = _nextFreeEntry; |