diff options
| author | 2018-10-10 00:42:10 -0400 | |
|---|---|---|
| committer | 2018-10-10 02:04:55 -0400 | |
| commit | 5c0408596f6ccf5d2b171321bac386713b169d5b (patch) | |
| tree | 1c5d3e1b178d7252cd3e752d8f2a99017a0ecb6d /src/core/hle/kernel/thread.h | |
| parent | Merge pull request #1461 from lioncash/warn (diff) | |
| download | yuzu-5c0408596f6ccf5d2b171321bac386713b169d5b.tar.gz yuzu-5c0408596f6ccf5d2b171321bac386713b169d5b.tar.xz yuzu-5c0408596f6ccf5d2b171321bac386713b169d5b.zip | |
kernel/thread: Use a regular pointer for the owner/current process
There's no real need to use a shared pointer in these cases, and only
makes object management more fragile in terms of how easy it would be to
introduce cycles. Instead, just do the simple thing of using a regular
pointer. Much of this is just a hold-over from citra anyways.
It also doesn't make sense from a behavioral point of view for a
process' thread to prolong the lifetime of the process itself (the
process is supposed to own the thread, not the other way around).
Diffstat (limited to 'src/core/hle/kernel/thread.h')
| -rw-r--r-- | src/core/hle/kernel/thread.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h index c6ffbd28c..f4d7bd235 100644 --- a/src/core/hle/kernel/thread.h +++ b/src/core/hle/kernel/thread.h | |||
| @@ -89,7 +89,7 @@ public: | |||
| 89 | static ResultVal<SharedPtr<Thread>> Create(KernelCore& kernel, std::string name, | 89 | static ResultVal<SharedPtr<Thread>> Create(KernelCore& kernel, std::string name, |
| 90 | VAddr entry_point, u32 priority, u64 arg, | 90 | VAddr entry_point, u32 priority, u64 arg, |
| 91 | s32 processor_id, VAddr stack_top, | 91 | s32 processor_id, VAddr stack_top, |
| 92 | SharedPtr<Process> owner_process); | 92 | Process& owner_process); |
| 93 | 93 | ||
| 94 | std::string GetName() const override { | 94 | std::string GetName() const override { |
| 95 | return name; | 95 | return name; |
| @@ -262,11 +262,11 @@ public: | |||
| 262 | return processor_id; | 262 | return processor_id; |
| 263 | } | 263 | } |
| 264 | 264 | ||
| 265 | SharedPtr<Process>& GetOwnerProcess() { | 265 | Process* GetOwnerProcess() { |
| 266 | return owner_process; | 266 | return owner_process; |
| 267 | } | 267 | } |
| 268 | 268 | ||
| 269 | const SharedPtr<Process>& GetOwnerProcess() const { | 269 | const Process* GetOwnerProcess() const { |
| 270 | return owner_process; | 270 | return owner_process; |
| 271 | } | 271 | } |
| 272 | 272 | ||
| @@ -386,7 +386,7 @@ private: | |||
| 386 | u64 tpidr_el0 = 0; ///< TPIDR_EL0 read/write system register. | 386 | u64 tpidr_el0 = 0; ///< TPIDR_EL0 read/write system register. |
| 387 | 387 | ||
| 388 | /// Process that owns this thread | 388 | /// Process that owns this thread |
| 389 | SharedPtr<Process> owner_process; | 389 | Process* owner_process; |
| 390 | 390 | ||
| 391 | /// Objects that the thread is waiting on, in the same order as they were | 391 | /// Objects that the thread is waiting on, in the same order as they were |
| 392 | /// passed to WaitSynchronization1/N. | 392 | /// passed to WaitSynchronization1/N. |