mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2025-07-23 23:45:46 +00:00
hle: kernel: Refactor to allocate a ServiceThread per service handler.
- Previously, we would allocate a thread per session, which adds new threads on CloneCurrentObject. - This results in race conditions with N sessions queuing requests to the same service interface. - Fixes Pokken Tournament DX crashes/softlocks, which were regressed by #6347.
This commit is contained in:
parent
3c2b21d3b9
commit
8bf7b19d1d
13 changed files with 75 additions and 67 deletions
|
@ -13,6 +13,8 @@
|
|||
|
||||
namespace Kernel {
|
||||
|
||||
class SessionRequestManager;
|
||||
|
||||
class KSession final : public KAutoObjectWithSlabHeapAndContainer<KSession, KAutoObjectWithList> {
|
||||
KERNEL_AUTOOBJECT_TRAITS(KSession, KAutoObject);
|
||||
|
||||
|
@ -20,7 +22,8 @@ public:
|
|||
explicit KSession(KernelCore& kernel_);
|
||||
~KSession() override;
|
||||
|
||||
void Initialize(KClientPort* port_, const std::string& name_);
|
||||
void Initialize(KClientPort* port_, const std::string& name_,
|
||||
std::shared_ptr<SessionRequestManager> manager_ = nullptr);
|
||||
|
||||
void Finalize() override;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue