diff options
author | bunnei <bunneidev@gmail.com> | 2022-02-21 21:31:23 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2022-02-21 21:41:06 +0100 |
commit | 57ebcbf2c4574e5d04d5b91ea2918b0d030ac92b (patch) | |
tree | 849296d997bdd7768b21f60958fbdd466c232a42 | |
parent | core: hle: kernel: KResourceLimit: Add a helper function for creating a KResourceLimit for a process. (diff) | |
download | yuzu-57ebcbf2c4574e5d04d5b91ea2918b0d030ac92b.tar yuzu-57ebcbf2c4574e5d04d5b91ea2918b0d030ac92b.tar.gz yuzu-57ebcbf2c4574e5d04d5b91ea2918b0d030ac92b.tar.bz2 yuzu-57ebcbf2c4574e5d04d5b91ea2918b0d030ac92b.tar.lz yuzu-57ebcbf2c4574e5d04d5b91ea2918b0d030ac92b.tar.xz yuzu-57ebcbf2c4574e5d04d5b91ea2918b0d030ac92b.tar.zst yuzu-57ebcbf2c4574e5d04d5b91ea2918b0d030ac92b.zip |
-rw-r--r-- | src/core/hle/kernel/k_event.cpp | 14 | ||||
-rw-r--r-- | src/core/hle/kernel/k_event.h | 2 | ||||
-rw-r--r-- | src/core/hle/kernel/svc.cpp | 2 | ||||
-rw-r--r-- | src/core/hle/service/kernel_helpers.cpp | 2 |
4 files changed, 8 insertions, 12 deletions
diff --git a/src/core/hle/kernel/k_event.cpp b/src/core/hle/kernel/k_event.cpp index 0720efece..2e0e8de80 100644 --- a/src/core/hle/kernel/k_event.cpp +++ b/src/core/hle/kernel/k_event.cpp @@ -14,7 +14,7 @@ KEvent::KEvent(KernelCore& kernel_) KEvent::~KEvent() = default; -void KEvent::Initialize(std::string&& name_) { +void KEvent::Initialize(std::string&& name_, KProcess* owner_) { // Increment reference count. // Because reference count is one on creation, this will result // in a reference count of two. Thus, when both readable and @@ -30,10 +30,8 @@ void KEvent::Initialize(std::string&& name_) { writable_event.Initialize(this, name_ + ":Writable"); // Set our owner process. - owner = kernel.CurrentProcess(); - if (owner) { - owner->Open(); - } + owner = owner_; + owner->Open(); // Mark initialized. name = std::move(name_); @@ -47,10 +45,8 @@ void KEvent::Finalize() { void KEvent::PostDestroy(uintptr_t arg) { // Release the event count resource the owner process holds. KProcess* owner = reinterpret_cast<KProcess*>(arg); - if (owner) { - owner->GetResourceLimit()->Release(LimitableResource::Events, 1); - owner->Close(); - } + owner->GetResourceLimit()->Release(LimitableResource::Events, 1); + owner->Close(); } } // namespace Kernel diff --git a/src/core/hle/kernel/k_event.h b/src/core/hle/kernel/k_event.h index 3d3ec99e2..de9732ddf 100644 --- a/src/core/hle/kernel/k_event.h +++ b/src/core/hle/kernel/k_event.h @@ -22,7 +22,7 @@ public: explicit KEvent(KernelCore& kernel_); ~KEvent() override; - void Initialize(std::string&& name); + void Initialize(std::string&& name, KProcess* owner_); void Finalize() override; diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 9836809f2..839171e85 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp @@ -2332,7 +2332,7 @@ static ResultCode CreateEvent(Core::System& system, Handle* out_write, Handle* o R_UNLESS(event != nullptr, ResultOutOfResource); // Initialize the event. - event->Initialize("CreateEvent"); + event->Initialize("CreateEvent", kernel.CurrentProcess()); // Commit the thread reservation. event_reservation.Commit(); diff --git a/src/core/hle/service/kernel_helpers.cpp b/src/core/hle/service/kernel_helpers.cpp index 62f4cdfb2..d0c7bc0ce 100644 --- a/src/core/hle/service/kernel_helpers.cpp +++ b/src/core/hle/service/kernel_helpers.cpp @@ -43,7 +43,7 @@ Kernel::KEvent* ServiceContext::CreateEvent(std::string&& name) { } // Initialize the event. - event->Initialize(std::move(name)); + event->Initialize(std::move(name), process); // Commit the thread reservation. event_reservation.Commit(); |