diff options
| author | 2022-11-03 21:45:56 -0700 | |
|---|---|---|
| committer | 2022-11-03 21:45:56 -0700 | |
| commit | 37de88040c1999fed639004fb7200cabb8a5f9c0 (patch) | |
| tree | 561f8439eb8cabd5f254701aaac05f728cdd1ade /src/core/hle/kernel/svc.cpp | |
| parent | Merge pull request #9154 from liamwhite/new-fb (diff) | |
| parent | sm:: avoid excessive port recreation (diff) | |
| download | yuzu-37de88040c1999fed639004fb7200cabb8a5f9c0.tar.gz yuzu-37de88040c1999fed639004fb7200cabb8a5f9c0.tar.xz yuzu-37de88040c1999fed639004fb7200cabb8a5f9c0.zip | |
Merge pull request #9135 from liamwhite/service-thread-event
kernel: invert session request handling flow
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 4aca5b27d..4c819f4b6 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | #include "core/hle/kernel/k_memory_block.h" | 24 | #include "core/hle/kernel/k_memory_block.h" |
| 25 | #include "core/hle/kernel/k_memory_layout.h" | 25 | #include "core/hle/kernel/k_memory_layout.h" |
| 26 | #include "core/hle/kernel/k_page_table.h" | 26 | #include "core/hle/kernel/k_page_table.h" |
| 27 | #include "core/hle/kernel/k_port.h" | ||
| 27 | #include "core/hle/kernel/k_process.h" | 28 | #include "core/hle/kernel/k_process.h" |
| 28 | #include "core/hle/kernel/k_readable_event.h" | 29 | #include "core/hle/kernel/k_readable_event.h" |
| 29 | #include "core/hle/kernel/k_resource_limit.h" | 30 | #include "core/hle/kernel/k_resource_limit.h" |
| @@ -382,9 +383,9 @@ static Result ConnectToNamedPort(Core::System& system, Handle* out, VAddr port_n | |||
| 382 | 383 | ||
| 383 | // Create a session. | 384 | // Create a session. |
| 384 | KClientSession* session{}; | 385 | KClientSession* session{}; |
| 385 | R_TRY(port->CreateSession(std::addressof(session), | 386 | R_TRY(port->CreateSession(std::addressof(session))); |
| 386 | std::make_shared<SessionRequestManager>(kernel))); | 387 | |
| 387 | port->Close(); | 388 | kernel.RegisterNamedServiceHandler(port_name, &port->GetParent()->GetServerPort()); |
| 388 | 389 | ||
| 389 | // Register the session in the table, close the extra reference. | 390 | // Register the session in the table, close the extra reference. |
| 390 | handle_table.Register(*out, session); | 391 | handle_table.Register(*out, session); |