diff options
| -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(); | 
