summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2021-04-23 21:50:04 -0700
committerGravatar bunnei2021-05-05 16:40:52 -0700
commitbf380b858481ef99d7150d322af2c30ac339bcde (patch)
tree823c0fb0cdb300d01fd02567c2126fa6ad582325 /src
parenthle: kernel: Do not shutdown twice on emulator close. (diff)
downloadyuzu-bf380b858481ef99d7150d322af2c30ac339bcde.tar.gz
yuzu-bf380b858481ef99d7150d322af2c30ac339bcde.tar.xz
yuzu-bf380b858481ef99d7150d322af2c30ac339bcde.zip
hle: kernel: Remove deprecated Object class.
Diffstat (limited to 'src')
-rw-r--r--src/core/CMakeLists.txt2
-rw-r--r--src/core/core.h1
-rw-r--r--src/core/hle/ipc_helpers.h17
-rw-r--r--src/core/hle/kernel/handle_table.h1
-rw-r--r--src/core/hle/kernel/hle_ipc.cpp1
-rw-r--r--src/core/hle/kernel/hle_ipc.h10
-rw-r--r--src/core/hle/kernel/k_auto_object.h14
-rw-r--r--src/core/hle/kernel/k_client_port.h15
-rw-r--r--src/core/hle/kernel/k_client_session.h19
-rw-r--r--src/core/hle/kernel/k_event.h11
-rw-r--r--src/core/hle/kernel/k_port.h18
-rw-r--r--src/core/hle/kernel/k_readable_event.h12
-rw-r--r--src/core/hle/kernel/k_resource_limit.h15
-rw-r--r--src/core/hle/kernel/k_server_port.cpp1
-rw-r--r--src/core/hle/kernel/k_server_port.h15
-rw-r--r--src/core/hle/kernel/k_server_session.h18
-rw-r--r--src/core/hle/kernel/k_session.cpp4
-rw-r--r--src/core/hle/kernel/k_session.h14
-rw-r--r--src/core/hle/kernel/k_shared_memory.h13
-rw-r--r--src/core/hle/kernel/k_synchronization_object.h9
-rw-r--r--src/core/hle/kernel/k_thread.cpp1
-rw-r--r--src/core/hle/kernel/k_thread.h15
-rw-r--r--src/core/hle/kernel/k_transfer_memory.h15
-rw-r--r--src/core/hle/kernel/k_writable_event.h12
-rw-r--r--src/core/hle/kernel/kernel.h2
-rw-r--r--src/core/hle/kernel/object.cpp42
-rw-r--r--src/core/hle/kernel/object.h98
-rw-r--r--src/core/hle/kernel/process.h15
-rw-r--r--src/core/hle/kernel/time_manager.h2
-rw-r--r--src/core/hle/service/am/applets/applets.h1
-rw-r--r--src/core/hle/service/hid/controllers/npad.h1
-rw-r--r--src/core/hle/service/hid/irs.h1
-rw-r--r--src/core/hle/service/nvflinger/buffer_queue.h1
-rw-r--r--src/core/hle/service/nvflinger/nvflinger.h1
-rw-r--r--src/core/hle/service/service.h1
-rw-r--r--src/core/hle/service/sm/controller.cpp2
-rw-r--r--src/core/hle/service/sm/sm.cpp2
-rw-r--r--src/yuzu/debugger/wait_tree.cpp28
-rw-r--r--src/yuzu/debugger/wait_tree.h7
39 files changed, 34 insertions, 423 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index cee6d30f6..4e1387c7e 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -232,8 +232,6 @@ add_library(core STATIC
232 hle/kernel/kernel.cpp 232 hle/kernel/kernel.cpp
233 hle/kernel/kernel.h 233 hle/kernel/kernel.h
234 hle/kernel/memory_types.h 234 hle/kernel/memory_types.h
235 hle/kernel/object.cpp
236 hle/kernel/object.h
237 hle/kernel/physical_core.cpp 235 hle/kernel/physical_core.cpp
238 hle/kernel/physical_core.h 236 hle/kernel/physical_core.h
239 hle/kernel/physical_memory.h 237 hle/kernel/physical_memory.h
diff --git a/src/core/core.h b/src/core/core.h
index f1068d23f..16e191266 100644
--- a/src/core/core.h
+++ b/src/core/core.h
@@ -12,7 +12,6 @@
12 12
13#include "common/common_types.h" 13#include "common/common_types.h"
14#include "core/file_sys/vfs_types.h" 14#include "core/file_sys/vfs_types.h"
15#include "core/hle/kernel/object.h"
16 15
17namespace Core::Frontend { 16namespace Core::Frontend {
18class EmuWindow; 17class EmuWindow;
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h
index 8128445fd..0906b8cfb 100644
--- a/src/core/hle/ipc_helpers.h
+++ b/src/core/hle/ipc_helpers.h
@@ -16,7 +16,6 @@
16#include "core/hle/kernel/hle_ipc.h" 16#include "core/hle/kernel/hle_ipc.h"
17#include "core/hle/kernel/k_client_port.h" 17#include "core/hle/kernel/k_client_port.h"
18#include "core/hle/kernel/k_session.h" 18#include "core/hle/kernel/k_session.h"
19#include "core/hle/kernel/object.h"
20#include "core/hle/result.h" 19#include "core/hle/result.h"
21 20
22namespace IPC { 21namespace IPC {
@@ -381,12 +380,6 @@ public:
381 template <typename T> 380 template <typename T>
382 T PopRaw(); 381 T PopRaw();
383 382
384 template <typename T>
385 T* GetMoveObject(std::size_t index);
386
387 template <typename T>
388 T* GetCopyObject(std::size_t index);
389
390 template <class T> 383 template <class T>
391 std::shared_ptr<T> PopIpcInterface() { 384 std::shared_ptr<T> PopIpcInterface() {
392 ASSERT(context->Session()->IsDomain()); 385 ASSERT(context->Session()->IsDomain());
@@ -491,14 +484,4 @@ void RequestParser::Pop(First& first_value, Other&... other_values) {
491 Pop(other_values...); 484 Pop(other_values...);
492} 485}
493 486
494template <typename T>
495T* RequestParser::GetMoveObject(std::size_t index) {
496 return context->GetMoveObject<T>(index);
497}
498
499template <typename T>
500T* RequestParser::GetCopyObject(std::size_t index) {
501 return context->GetCopyObject<T>(index);
502}
503
504} // namespace IPC 487} // namespace IPC
diff --git a/src/core/hle/kernel/handle_table.h b/src/core/hle/kernel/handle_table.h
index 2e0b2d8b8..791e303d1 100644
--- a/src/core/hle/kernel/handle_table.h
+++ b/src/core/hle/kernel/handle_table.h
@@ -12,7 +12,6 @@
12#include "core/hle/kernel/k_auto_object.h" 12#include "core/hle/kernel/k_auto_object.h"
13#include "core/hle/kernel/k_spin_lock.h" 13#include "core/hle/kernel/k_spin_lock.h"
14#include "core/hle/kernel/kernel.h" 14#include "core/hle/kernel/kernel.h"
15#include "core/hle/kernel/object.h"
16#include "core/hle/result.h" 15#include "core/hle/result.h"
17 16
18namespace Kernel { 17namespace Kernel {
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index ddff9ce99..a11528f28 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -23,7 +23,6 @@
23#include "core/hle/kernel/k_thread.h" 23#include "core/hle/kernel/k_thread.h"
24#include "core/hle/kernel/k_writable_event.h" 24#include "core/hle/kernel/k_writable_event.h"
25#include "core/hle/kernel/kernel.h" 25#include "core/hle/kernel/kernel.h"
26#include "core/hle/kernel/object.h"
27#include "core/hle/kernel/process.h" 26#include "core/hle/kernel/process.h"
28#include "core/hle/kernel/svc_results.h" 27#include "core/hle/kernel/svc_results.h"
29#include "core/hle/kernel/time_manager.h" 28#include "core/hle/kernel/time_manager.h"
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h
index d63c730ac..7f7ab74dd 100644
--- a/src/core/hle/kernel/hle_ipc.h
+++ b/src/core/hle/kernel/hle_ipc.h
@@ -212,16 +212,6 @@ public:
212 return move_handles.at(index); 212 return move_handles.at(index);
213 } 213 }
214 214
215 template <typename T>
216 T* GetCopyObject(std::size_t index) {
217 return DynamicObjectCast<T>(copy_objects.at(index));
218 }
219
220 template <typename T>
221 T* GetMoveObject(std::size_t index) {
222 return DynamicObjectCast<T>(move_objects.at(index));
223 }
224
225 void AddMoveObject(KAutoObject* object) { 215 void AddMoveObject(KAutoObject* object) {
226 move_objects.emplace_back(object); 216 move_objects.emplace_back(object);
227 } 217 }
diff --git a/src/core/hle/kernel/k_auto_object.h b/src/core/hle/kernel/k_auto_object.h
index 64c012d44..fd6405a0e 100644
--- a/src/core/hle/kernel/k_auto_object.h
+++ b/src/core/hle/kernel/k_auto_object.h
@@ -11,13 +11,14 @@
11#include "common/common_types.h" 11#include "common/common_types.h"
12#include "common/intrusive_red_black_tree.h" 12#include "common/intrusive_red_black_tree.h"
13#include "core/hle/kernel/k_class_token.h" 13#include "core/hle/kernel/k_class_token.h"
14#include "core/hle/kernel/object.h"
15 14
16namespace Kernel { 15namespace Kernel {
17 16
18class KernelCore; 17class KernelCore;
19class Process; 18class Process;
20 19
20using Handle = u32;
21
21#define KERNEL_AUTOOBJECT_TRAITS(CLASS, BASE_CLASS) \ 22#define KERNEL_AUTOOBJECT_TRAITS(CLASS, BASE_CLASS) \
22 NON_COPYABLE(CLASS); \ 23 NON_COPYABLE(CLASS); \
23 NON_MOVEABLE(CLASS); \ 24 NON_MOVEABLE(CLASS); \
@@ -48,7 +49,7 @@ public:
48 \ 49 \
49private: 50private:
50 51
51class KAutoObject : public Object { 52class KAutoObject {
52protected: 53protected:
53 class TypeObj { 54 class TypeObj {
54 private: 55 private:
@@ -84,16 +85,17 @@ private:
84 KERNEL_AUTOOBJECT_TRAITS(KAutoObject, KAutoObject); 85 KERNEL_AUTOOBJECT_TRAITS(KAutoObject, KAutoObject);
85 86
86private: 87private:
87 std::atomic<u32> m_ref_count; 88 std::atomic<u32> m_ref_count{};
88 89
89protected: 90protected:
90 KernelCore& kernel; 91 KernelCore& kernel;
92 std::string name;
91 93
92public: 94public:
93 static KAutoObject* Create(KAutoObject* ptr); 95 static KAutoObject* Create(KAutoObject* ptr);
94 96
95public: 97public:
96 explicit KAutoObject(KernelCore& kernel_) : Object{kernel_}, m_ref_count(0), kernel(kernel_) {} 98 explicit KAutoObject(KernelCore& kernel_) : kernel(kernel_) {}
97 virtual ~KAutoObject() {} 99 virtual ~KAutoObject() {}
98 100
99 // Destroy is responsible for destroying the auto object's resources when ref_count hits zero. 101 // Destroy is responsible for destroying the auto object's resources when ref_count hits zero.
@@ -205,6 +207,10 @@ public:
205 virtual u64 GetId() const { 207 virtual u64 GetId() const {
206 return reinterpret_cast<u64>(this); 208 return reinterpret_cast<u64>(this);
207 } 209 }
210
211 virtual const std::string& GetName() const {
212 return name;
213 }
208}; 214};
209 215
210template <typename T> 216template <typename T>
diff --git a/src/core/hle/kernel/k_client_port.h b/src/core/hle/kernel/k_client_port.h
index 43a17f4a4..f971a8b2c 100644
--- a/src/core/hle/kernel/k_client_port.h
+++ b/src/core/hle/kernel/k_client_port.h
@@ -51,26 +51,11 @@ public:
51 51
52 ResultCode CreateSession(KClientSession** out); 52 ResultCode CreateSession(KClientSession** out);
53 53
54 // DEPRECATED
55
56 std::string GetTypeName() const override {
57 return "ClientPort";
58 }
59 std::string GetName() const override {
60 return name;
61 }
62
63 static constexpr HandleType HANDLE_TYPE = HandleType::ClientPort;
64 HandleType GetHandleType() const override {
65 return HANDLE_TYPE;
66 }
67
68private: 54private:
69 std::atomic<s32> num_sessions{}; 55 std::atomic<s32> num_sessions{};
70 std::atomic<s32> peak_sessions{}; 56 std::atomic<s32> peak_sessions{};
71 s32 max_sessions{}; 57 s32 max_sessions{};
72 KPort* parent{}; 58 KPort* parent{};
73 std::string name;
74}; 59};
75 60
76} // namespace Kernel 61} // namespace Kernel
diff --git a/src/core/hle/kernel/k_client_session.h b/src/core/hle/kernel/k_client_session.h
index c4b193773..1480597e2 100644
--- a/src/core/hle/kernel/k_client_session.h
+++ b/src/core/hle/kernel/k_client_session.h
@@ -54,27 +54,8 @@ public:
54 54
55 void OnServerClosed(); 55 void OnServerClosed();
56 56
57 // DEPRECATED
58
59 static constexpr HandleType HANDLE_TYPE = HandleType::ClientSession;
60 HandleType GetHandleType() const override {
61 return HANDLE_TYPE;
62 }
63
64 std::string GetTypeName() const override {
65 return "ClientSession";
66 }
67
68 std::string GetName() const override {
69 return name;
70 }
71
72private: 57private:
73 /// The parent session, which links to the server endpoint.
74 KSession* parent{}; 58 KSession* parent{};
75
76 /// Name of the client session (optional)
77 std::string name;
78}; 59};
79 60
80} // namespace Kernel 61} // namespace Kernel
diff --git a/src/core/hle/kernel/k_event.h b/src/core/hle/kernel/k_event.h
index 45634e401..f0b89f882 100644
--- a/src/core/hle/kernel/k_event.h
+++ b/src/core/hle/kernel/k_event.h
@@ -48,17 +48,6 @@ public:
48 return writable_event; 48 return writable_event;
49 } 49 }
50 50
51 // DEPRECATED
52
53 std::string GetTypeName() const override {
54 return "KEvent";
55 }
56
57 static constexpr HandleType HANDLE_TYPE = HandleType::Event;
58 HandleType GetHandleType() const override {
59 return HANDLE_TYPE;
60 }
61
62private: 51private:
63 KReadableEvent readable_event; 52 KReadableEvent readable_event;
64 KWritableEvent writable_event; 53 KWritableEvent writable_event;
diff --git a/src/core/hle/kernel/k_port.h b/src/core/hle/kernel/k_port.h
index 68c8ed8df..f1b2838d8 100644
--- a/src/core/hle/kernel/k_port.h
+++ b/src/core/hle/kernel/k_port.h
@@ -51,22 +51,6 @@ public:
51 return server; 51 return server;
52 } 52 }
53 53
54 // DEPRECATED
55
56 friend class ServerPort;
57 std::string GetTypeName() const override {
58 return "Port";
59 }
60 std::string GetName() const override {
61 return name;
62 }
63
64 HandleType GetHandleType() const override {
65 return {};
66 }
67
68 void Finalize() override {}
69
70private: 54private:
71 enum class State : u8 { 55 enum class State : u8 {
72 Invalid = 0, 56 Invalid = 0,
@@ -80,8 +64,6 @@ private:
80 KClientPort client; 64 KClientPort client;
81 State state{State::Invalid}; 65 State state{State::Invalid};
82 bool is_light{}; 66 bool is_light{};
83
84 std::string name; ///< Name of client port (optional)
85}; 67};
86 68
87} // namespace Kernel 69} // namespace Kernel
diff --git a/src/core/hle/kernel/k_readable_event.h b/src/core/hle/kernel/k_readable_event.h
index 4c22f0584..8514d065a 100644
--- a/src/core/hle/kernel/k_readable_event.h
+++ b/src/core/hle/kernel/k_readable_event.h
@@ -6,7 +6,6 @@
6 6
7#include "core/hle/kernel/k_auto_object.h" 7#include "core/hle/kernel/k_auto_object.h"
8#include "core/hle/kernel/k_synchronization_object.h" 8#include "core/hle/kernel/k_synchronization_object.h"
9#include "core/hle/kernel/object.h"
10#include "core/hle/kernel/slab_helpers.h" 9#include "core/hle/kernel/slab_helpers.h"
11#include "core/hle/result.h" 10#include "core/hle/result.h"
12 11
@@ -39,17 +38,6 @@ public:
39 ResultCode Clear(); 38 ResultCode Clear();
40 ResultCode Reset(); 39 ResultCode Reset();
41 40
42 // DEPRECATED
43
44 std::string GetTypeName() const override {
45 return "KReadableEvent";
46 }
47
48 static constexpr HandleType HANDLE_TYPE = HandleType::ReadableEvent;
49 HandleType GetHandleType() const override {
50 return HANDLE_TYPE;
51 }
52
53private: 41private:
54 bool is_signaled{}; 42 bool is_signaled{};
55 KEvent* parent{}; 43 KEvent* parent{};
diff --git a/src/core/hle/kernel/k_resource_limit.h b/src/core/hle/kernel/k_resource_limit.h
index 483c66c33..66ebf32df 100644
--- a/src/core/hle/kernel/k_resource_limit.h
+++ b/src/core/hle/kernel/k_resource_limit.h
@@ -8,7 +8,6 @@
8#include "common/common_types.h" 8#include "common/common_types.h"
9#include "core/hle/kernel/k_light_condition_variable.h" 9#include "core/hle/kernel/k_light_condition_variable.h"
10#include "core/hle/kernel/k_light_lock.h" 10#include "core/hle/kernel/k_light_lock.h"
11#include "core/hle/kernel/object.h"
12 11
13union ResultCode; 12union ResultCode;
14 13
@@ -57,20 +56,6 @@ public:
57 56
58 static void PostDestroy([[maybe_unused]] uintptr_t arg) {} 57 static void PostDestroy([[maybe_unused]] uintptr_t arg) {}
59 58
60 // DEPRECATED
61
62 std::string GetTypeName() const override {
63 return "KResourceLimit";
64 }
65 std::string GetName() const override {
66 return GetTypeName();
67 }
68
69 static constexpr HandleType HANDLE_TYPE = HandleType::ResourceLimit;
70 HandleType GetHandleType() const override {
71 return HANDLE_TYPE;
72 }
73
74private: 59private:
75 using ResourceArray = std::array<s64, static_cast<std::size_t>(LimitableResource::Count)>; 60 using ResourceArray = std::array<s64, static_cast<std::size_t>(LimitableResource::Count)>;
76 ResourceArray limit_values{}; 61 ResourceArray limit_values{};
diff --git a/src/core/hle/kernel/k_server_port.cpp b/src/core/hle/kernel/k_server_port.cpp
index fcc04abaa..5e44c48e2 100644
--- a/src/core/hle/kernel/k_server_port.cpp
+++ b/src/core/hle/kernel/k_server_port.cpp
@@ -10,7 +10,6 @@
10#include "core/hle/kernel/k_server_port.h" 10#include "core/hle/kernel/k_server_port.h"
11#include "core/hle/kernel/k_server_session.h" 11#include "core/hle/kernel/k_server_session.h"
12#include "core/hle/kernel/k_thread.h" 12#include "core/hle/kernel/k_thread.h"
13#include "core/hle/kernel/object.h"
14#include "core/hle/kernel/svc_results.h" 13#include "core/hle/kernel/svc_results.h"
15 14
16namespace Kernel { 15namespace Kernel {
diff --git a/src/core/hle/kernel/k_server_port.h b/src/core/hle/kernel/k_server_port.h
index 9f45ca3f4..a46fa8f54 100644
--- a/src/core/hle/kernel/k_server_port.h
+++ b/src/core/hle/kernel/k_server_port.h
@@ -68,20 +68,6 @@ public:
68 virtual void Destroy() override; 68 virtual void Destroy() override;
69 virtual bool IsSignaled() const override; 69 virtual bool IsSignaled() const override;
70 70
71 // DEPRECATED
72
73 std::string GetTypeName() const override {
74 return "ServerPort";
75 }
76 std::string GetName() const override {
77 return name;
78 }
79
80 static constexpr HandleType HANDLE_TYPE = HandleType::ServerPort;
81 HandleType GetHandleType() const override {
82 return HANDLE_TYPE;
83 }
84
85private: 71private:
86 void CleanupSessions(); 72 void CleanupSessions();
87 73
@@ -89,7 +75,6 @@ private:
89 SessionList session_list; 75 SessionList session_list;
90 HLEHandler hle_handler; 76 HLEHandler hle_handler;
91 KPort* parent{}; 77 KPort* parent{};
92 std::string name;
93}; 78};
94 79
95} // namespace Kernel 80} // namespace Kernel
diff --git a/src/core/hle/kernel/k_server_session.h b/src/core/hle/kernel/k_server_session.h
index d748754d0..4a54e6634 100644
--- a/src/core/hle/kernel/k_server_session.h
+++ b/src/core/hle/kernel/k_server_session.h
@@ -103,21 +103,6 @@ public:
103 convert_to_domain = true; 103 convert_to_domain = true;
104 } 104 }
105 105
106 // DEPRECATED
107
108 std::string GetTypeName() const override {
109 return "ServerSession";
110 }
111
112 std::string GetName() const override {
113 return name;
114 }
115
116 static constexpr HandleType HANDLE_TYPE = HandleType::ServerSession;
117 HandleType GetHandleType() const override {
118 return HANDLE_TYPE;
119 }
120
121private: 106private:
122 /// Queues a sync request from the emulated application. 107 /// Queues a sync request from the emulated application.
123 ResultCode QueueSyncRequest(KThread* thread, Core::Memory::Memory& memory); 108 ResultCode QueueSyncRequest(KThread* thread, Core::Memory::Memory& memory);
@@ -138,9 +123,6 @@ private:
138 /// When set to True, converts the session to a domain at the end of the command 123 /// When set to True, converts the session to a domain at the end of the command
139 bool convert_to_domain{}; 124 bool convert_to_domain{};
140 125
141 /// The name of this session (optional)
142 std::string name;
143
144 /// Thread to dispatch service requests 126 /// Thread to dispatch service requests
145 std::weak_ptr<ServiceThread> service_thread; 127 std::weak_ptr<ServiceThread> service_thread;
146 128
diff --git a/src/core/hle/kernel/k_session.cpp b/src/core/hle/kernel/k_session.cpp
index 6f4276189..6f5947ce7 100644
--- a/src/core/hle/kernel/k_session.cpp
+++ b/src/core/hle/kernel/k_session.cpp
@@ -15,7 +15,7 @@ KSession::KSession(KernelCore& kernel)
15 : KAutoObjectWithSlabHeapAndContainer{kernel}, server{kernel}, client{kernel} {} 15 : KAutoObjectWithSlabHeapAndContainer{kernel}, server{kernel}, client{kernel} {}
16KSession::~KSession() = default; 16KSession::~KSession() = default;
17 17
18void KSession::Initialize(KClientPort* port_, std::string&& name_) { 18void KSession::Initialize(KClientPort* port_, const std::string& name_) {
19 // Increment reference count. 19 // Increment reference count.
20 // Because reference count is one on creation, this will result 20 // Because reference count is one on creation, this will result
21 // in a reference count of two. Thus, when both server and client are closed 21 // in a reference count of two. Thus, when both server and client are closed
@@ -32,7 +32,7 @@ void KSession::Initialize(KClientPort* port_, std::string&& name_) {
32 32
33 // Set state and name. 33 // Set state and name.
34 SetState(State::Normal); 34 SetState(State::Normal);
35 name = std::move(name_); 35 name = name_;
36 36
37 // Set our owner process. 37 // Set our owner process.
38 process = kernel.CurrentProcess(); 38 process = kernel.CurrentProcess();
diff --git a/src/core/hle/kernel/k_session.h b/src/core/hle/kernel/k_session.h
index 1597cc608..f29195fa0 100644
--- a/src/core/hle/kernel/k_session.h
+++ b/src/core/hle/kernel/k_session.h
@@ -28,7 +28,7 @@ public:
28 explicit KSession(KernelCore& kernel); 28 explicit KSession(KernelCore& kernel);
29 virtual ~KSession() override; 29 virtual ~KSession() override;
30 30
31 void Initialize(KClientPort* port_, std::string&& name_); 31 void Initialize(KClientPort* port_, const std::string& name_);
32 32
33 virtual void Finalize() override; 33 virtual void Finalize() override;
34 34
@@ -74,17 +74,6 @@ public:
74 return port; 74 return port;
75 } 75 }
76 76
77 // DEPRECATED
78
79 std::string GetName() const override {
80 return name;
81 }
82
83 static constexpr HandleType HANDLE_TYPE = HandleType::Session;
84 HandleType GetHandleType() const override {
85 return HANDLE_TYPE;
86 }
87
88private: 77private:
89 void SetState(State state) { 78 void SetState(State state) {
90 atomic_state = static_cast<u8>(state); 79 atomic_state = static_cast<u8>(state);
@@ -100,7 +89,6 @@ private:
100 std::atomic<std::underlying_type<State>::type> atomic_state{ 89 std::atomic<std::underlying_type<State>::type> atomic_state{
101 static_cast<std::underlying_type<State>::type>(State::Invalid)}; 90 static_cast<std::underlying_type<State>::type>(State::Invalid)};
102 KClientPort* port{}; 91 KClientPort* port{};
103 std::string name;
104 Process* process{}; 92 Process* process{};
105 bool initialized{}; 93 bool initialized{};
106}; 94};
diff --git a/src/core/hle/kernel/k_shared_memory.h b/src/core/hle/kernel/k_shared_memory.h
index 93153ab20..9547546a5 100644
--- a/src/core/hle/kernel/k_shared_memory.h
+++ b/src/core/hle/kernel/k_shared_memory.h
@@ -32,19 +32,6 @@ public:
32 KMemoryPermission owner_permission_, KMemoryPermission user_permission_, 32 KMemoryPermission owner_permission_, KMemoryPermission user_permission_,
33 PAddr physical_address_, std::size_t size_, std::string name_); 33 PAddr physical_address_, std::size_t size_, std::string name_);
34 34
35 std::string GetTypeName() const override {
36 return "SharedMemory";
37 }
38
39 std::string GetName() const override {
40 return name;
41 }
42
43 static constexpr HandleType HANDLE_TYPE = HandleType::SharedMemory;
44 HandleType GetHandleType() const override {
45 return HANDLE_TYPE;
46 }
47
48 /** 35 /**
49 * Maps a shared memory block to an address in the target process' address space 36 * Maps a shared memory block to an address in the target process' address space
50 * @param target_process Process on which to map the memory block 37 * @param target_process Process on which to map the memory block
diff --git a/src/core/hle/kernel/k_synchronization_object.h b/src/core/hle/kernel/k_synchronization_object.h
index 5a99dbd46..a41dd1220 100644
--- a/src/core/hle/kernel/k_synchronization_object.h
+++ b/src/core/hle/kernel/k_synchronization_object.h
@@ -51,13 +51,4 @@ private:
51 ThreadListNode* thread_list_tail{}; 51 ThreadListNode* thread_list_tail{};
52}; 52};
53 53
54// Specialization of DynamicObjectCast for KSynchronizationObjects
55template <>
56inline KSynchronizationObject* DynamicObjectCast<KSynchronizationObject>(Object* object) {
57 if (object != nullptr && object->IsWaitable()) {
58 return reinterpret_cast<KSynchronizationObject*>(object);
59 }
60 return nullptr;
61}
62
63} // namespace Kernel 54} // namespace Kernel
diff --git a/src/core/hle/kernel/k_thread.cpp b/src/core/hle/kernel/k_thread.cpp
index 5cc0a0064..c59f3113c 100644
--- a/src/core/hle/kernel/k_thread.cpp
+++ b/src/core/hle/kernel/k_thread.cpp
@@ -27,7 +27,6 @@
27#include "core/hle/kernel/k_thread.h" 27#include "core/hle/kernel/k_thread.h"
28#include "core/hle/kernel/k_thread_queue.h" 28#include "core/hle/kernel/k_thread_queue.h"
29#include "core/hle/kernel/kernel.h" 29#include "core/hle/kernel/kernel.h"
30#include "core/hle/kernel/object.h"
31#include "core/hle/kernel/process.h" 30#include "core/hle/kernel/process.h"
32#include "core/hle/kernel/svc_results.h" 31#include "core/hle/kernel/svc_results.h"
33#include "core/hle/kernel/time_manager.h" 32#include "core/hle/kernel/time_manager.h"
diff --git a/src/core/hle/kernel/k_thread.h b/src/core/hle/kernel/k_thread.h
index 5c1c17d48..5b943b18b 100644
--- a/src/core/hle/kernel/k_thread.h
+++ b/src/core/hle/kernel/k_thread.h
@@ -19,7 +19,6 @@
19#include "core/hle/kernel/k_light_lock.h" 19#include "core/hle/kernel/k_light_lock.h"
20#include "core/hle/kernel/k_spin_lock.h" 20#include "core/hle/kernel/k_spin_lock.h"
21#include "core/hle/kernel/k_synchronization_object.h" 21#include "core/hle/kernel/k_synchronization_object.h"
22#include "core/hle/kernel/object.h"
23#include "core/hle/kernel/slab_helpers.h" 22#include "core/hle/kernel/slab_helpers.h"
24#include "core/hle/kernel/svc_common.h" 23#include "core/hle/kernel/svc_common.h"
25#include "core/hle/kernel/svc_types.h" 24#include "core/hle/kernel/svc_types.h"
@@ -120,23 +119,10 @@ public:
120 using ThreadContext64 = Core::ARM_Interface::ThreadContext64; 119 using ThreadContext64 = Core::ARM_Interface::ThreadContext64;
121 using WaiterList = boost::intrusive::list<KThread>; 120 using WaiterList = boost::intrusive::list<KThread>;
122 121
123 [[nodiscard]] std::string GetName() const override {
124 return name;
125 }
126
127 void SetName(std::string new_name) { 122 void SetName(std::string new_name) {
128 name = std::move(new_name); 123 name = std::move(new_name);
129 } 124 }
130 125
131 [[nodiscard]] std::string GetTypeName() const override {
132 return "Thread";
133 }
134
135 static constexpr HandleType HANDLE_TYPE = HandleType::Thread;
136 [[nodiscard]] HandleType GetHandleType() const override {
137 return HANDLE_TYPE;
138 }
139
140 /** 126 /**
141 * Gets the thread's current priority 127 * Gets the thread's current priority
142 * @return The current thread's priority 128 * @return The current thread's priority
@@ -728,7 +714,6 @@ private:
728 VAddr mutex_wait_address_for_debugging{}; 714 VAddr mutex_wait_address_for_debugging{};
729 ThreadWaitReasonForDebugging wait_reason_for_debugging{}; 715 ThreadWaitReasonForDebugging wait_reason_for_debugging{};
730 ThreadType thread_type_for_debugging{}; 716 ThreadType thread_type_for_debugging{};
731 std::string name;
732 717
733public: 718public:
734 using ConditionVariableThreadTreeType = ConditionVariableThreadTree; 719 using ConditionVariableThreadTreeType = ConditionVariableThreadTree;
diff --git a/src/core/hle/kernel/k_transfer_memory.h b/src/core/hle/kernel/k_transfer_memory.h
index 3c3fa401b..1e4fa9323 100644
--- a/src/core/hle/kernel/k_transfer_memory.h
+++ b/src/core/hle/kernel/k_transfer_memory.h
@@ -55,21 +55,6 @@ public:
55 return is_initialized ? size * PageSize : 0; 55 return is_initialized ? size * PageSize : 0;
56 } 56 }
57 57
58 // DEPRECATED
59
60 std::string GetTypeName() const override {
61 return "TransferMemory";
62 }
63
64 std::string GetName() const override {
65 return GetTypeName();
66 }
67
68 static constexpr HandleType HANDLE_TYPE = HandleType::TransferMemory;
69 HandleType GetHandleType() const override {
70 return HANDLE_TYPE;
71 }
72
73private: 58private:
74 Process* owner{}; 59 Process* owner{};
75 VAddr address{}; 60 VAddr address{};
diff --git a/src/core/hle/kernel/k_writable_event.h b/src/core/hle/kernel/k_writable_event.h
index 7cf43f77e..f5e083482 100644
--- a/src/core/hle/kernel/k_writable_event.h
+++ b/src/core/hle/kernel/k_writable_event.h
@@ -5,7 +5,6 @@
5#pragma once 5#pragma once
6 6
7#include "core/hle/kernel/k_auto_object.h" 7#include "core/hle/kernel/k_auto_object.h"
8#include "core/hle/kernel/object.h"
9#include "core/hle/kernel/slab_helpers.h" 8#include "core/hle/kernel/slab_helpers.h"
10#include "core/hle/result.h" 9#include "core/hle/result.h"
11 10
@@ -34,17 +33,6 @@ public:
34 return parent; 33 return parent;
35 } 34 }
36 35
37 // DEPRECATED
38
39 std::string GetTypeName() const override {
40 return "KWritableEvent";
41 }
42
43 static constexpr HandleType HANDLE_TYPE = HandleType::WritableEvent;
44 HandleType GetHandleType() const override {
45 return HANDLE_TYPE;
46 }
47
48private: 36private:
49 KEvent* parent{}; 37 KEvent* parent{};
50}; 38};
diff --git a/src/core/hle/kernel/kernel.h b/src/core/hle/kernel/kernel.h
index 723be6b51..de7f83423 100644
--- a/src/core/hle/kernel/kernel.h
+++ b/src/core/hle/kernel/kernel.h
@@ -14,7 +14,6 @@
14#include "core/hle/kernel/k_auto_object.h" 14#include "core/hle/kernel/k_auto_object.h"
15#include "core/hle/kernel/k_slab_heap.h" 15#include "core/hle/kernel/k_slab_heap.h"
16#include "core/hle/kernel/memory_types.h" 16#include "core/hle/kernel/memory_types.h"
17#include "core/hle/kernel/object.h"
18 17
19namespace Core { 18namespace Core {
20class CPUInterruptHandler; 19class CPUInterruptHandler;
@@ -293,7 +292,6 @@ public:
293 } 292 }
294 293
295private: 294private:
296 friend class Object;
297 friend class Process; 295 friend class Process;
298 friend class KThread; 296 friend class KThread;
299 297
diff --git a/src/core/hle/kernel/object.cpp b/src/core/hle/kernel/object.cpp
deleted file mode 100644
index d7f40c403..000000000
--- a/src/core/hle/kernel/object.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
1// Copyright 2018 Citra Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "common/assert.h"
6#include "core/hle/kernel/kernel.h"
7#include "core/hle/kernel/object.h"
8
9namespace Kernel {
10
11Object::Object(KernelCore& kernel_)
12 : kernel{kernel_}, object_id{kernel_.CreateNewObjectID()}, name{"[UNKNOWN KERNEL OBJECT]"} {}
13Object::Object(KernelCore& kernel_, std::string&& name_)
14 : kernel{kernel_}, object_id{kernel_.CreateNewObjectID()}, name{std::move(name_)} {}
15Object::~Object() = default;
16
17bool Object::IsWaitable() const {
18 switch (GetHandleType()) {
19 case HandleType::ReadableEvent:
20 case HandleType::Thread:
21 case HandleType::Process:
22 case HandleType::ServerPort:
23 case HandleType::ServerSession:
24 return true;
25
26 case HandleType::Unknown:
27 case HandleType::Event:
28 case HandleType::WritableEvent:
29 case HandleType::SharedMemory:
30 case HandleType::TransferMemory:
31 case HandleType::ResourceLimit:
32 case HandleType::ClientPort:
33 case HandleType::ClientSession:
34 case HandleType::Session:
35 return false;
36 }
37
38 UNREACHABLE();
39 return false;
40}
41
42} // namespace Kernel
diff --git a/src/core/hle/kernel/object.h b/src/core/hle/kernel/object.h
deleted file mode 100644
index 03443b947..000000000
--- a/src/core/hle/kernel/object.h
+++ /dev/null
@@ -1,98 +0,0 @@
1// Copyright 2018 Citra Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include <atomic>
8#include <memory>
9#include <string>
10
11#include "common/common_types.h"
12
13namespace Kernel {
14
15class KernelCore;
16
17using Handle = u32;
18
19enum class HandleType : u32 {
20 Unknown,
21 Event,
22 WritableEvent,
23 ReadableEvent,
24 SharedMemory,
25 TransferMemory,
26 Thread,
27 Process,
28 ResourceLimit,
29 ClientPort,
30 ServerPort,
31 ClientSession,
32 ServerSession,
33 Session,
34};
35
36class Object : NonCopyable, public std::enable_shared_from_this<Object> {
37public:
38 explicit Object(KernelCore& kernel_);
39 explicit Object(KernelCore& kernel_, std::string&& name_);
40 virtual ~Object();
41
42 /// Returns a unique identifier for the object. For debugging purposes only.
43 u32 GetObjectId() const {
44 return object_id.load(std::memory_order_relaxed);
45 }
46
47 virtual std::string GetTypeName() const {
48 return "[BAD KERNEL OBJECT TYPE]";
49 }
50 virtual std::string GetName() const {
51 return name;
52 }
53 virtual HandleType GetHandleType() const = 0;
54
55 void Close() {
56 // TODO(bunnei): This is a placeholder to decrement the reference count, which we will use
57 // when we implement KAutoObject instead of using shared_ptr.
58 }
59
60 /**
61 * Check if a thread can wait on the object
62 * @return True if a thread can wait on the object, otherwise false
63 */
64 bool IsWaitable() const;
65
66 virtual void Finalize() = 0;
67
68protected:
69 /// The kernel instance this object was created under.
70 KernelCore& kernel;
71
72private:
73 std::atomic<u32> object_id{0};
74
75protected:
76 std::string name;
77};
78
79template <typename T>
80std::shared_ptr<T> SharedFrom(T* raw) {
81 if (raw == nullptr)
82 return nullptr;
83 return std::static_pointer_cast<T>(raw->shared_from_this());
84}
85
86/**
87 * Attempts to downcast the given Object pointer to a pointer to T.
88 * @return Derived pointer to the object, or `nullptr` if `object` isn't of type T.
89 */
90template <typename T>
91inline T* DynamicObjectCast(Object* object) {
92 if (object != nullptr && object->GetHandleType() == T::HANDLE_TYPE) {
93 return reinterpret_cast<T*>(object);
94 }
95 return nullptr;
96}
97
98} // namespace Kernel
diff --git a/src/core/hle/kernel/process.h b/src/core/hle/kernel/process.h
index 35fe16433..b775e1fd0 100644
--- a/src/core/hle/kernel/process.h
+++ b/src/core/hle/kernel/process.h
@@ -92,18 +92,6 @@ public:
92 static ResultCode Initialize(Process* process, Core::System& system, std::string name, 92 static ResultCode Initialize(Process* process, Core::System& system, std::string name,
93 ProcessType type); 93 ProcessType type);
94 94
95 std::string GetTypeName() const override {
96 return "Process";
97 }
98 std::string GetName() const override {
99 return name;
100 }
101
102 static constexpr HandleType HANDLE_TYPE = HandleType::Process;
103 HandleType GetHandleType() const override {
104 return HANDLE_TYPE;
105 }
106
107 /// Gets a reference to the process' page table. 95 /// Gets a reference to the process' page table.
108 KPageTable& PageTable() { 96 KPageTable& PageTable() {
109 return *page_table; 97 return *page_table;
@@ -468,9 +456,6 @@ private:
468 /// Process total image size 456 /// Process total image size
469 std::size_t image_size{}; 457 std::size_t image_size{};
470 458
471 /// Name of this process
472 std::string name;
473
474 /// Schedule count of this process 459 /// Schedule count of this process
475 s64 schedule_count{}; 460 s64 schedule_count{};
476 461
diff --git a/src/core/hle/kernel/time_manager.h b/src/core/hle/kernel/time_manager.h
index 0d7f05f30..2d175a9c4 100644
--- a/src/core/hle/kernel/time_manager.h
+++ b/src/core/hle/kernel/time_manager.h
@@ -8,8 +8,6 @@
8#include <mutex> 8#include <mutex>
9#include <unordered_map> 9#include <unordered_map>
10 10
11#include "core/hle/kernel/object.h"
12
13namespace Core { 11namespace Core {
14class System; 12class System;
15} // namespace Core 13} // namespace Core
diff --git a/src/core/hle/service/am/applets/applets.h b/src/core/hle/service/am/applets/applets.h
index 229dc7a1e..5c0b4b459 100644
--- a/src/core/hle/service/am/applets/applets.h
+++ b/src/core/hle/service/am/applets/applets.h
@@ -9,7 +9,6 @@
9 9
10#include "common/swap.h" 10#include "common/swap.h"
11#include "core/hle/kernel/k_event.h" 11#include "core/hle/kernel/k_event.h"
12#include "core/hle/kernel/object.h"
13 12
14union ResultCode; 13union ResultCode;
15 14
diff --git a/src/core/hle/service/hid/controllers/npad.h b/src/core/hle/service/hid/controllers/npad.h
index b0f575561..c050c9a44 100644
--- a/src/core/hle/service/hid/controllers/npad.h
+++ b/src/core/hle/service/hid/controllers/npad.h
@@ -11,7 +11,6 @@
11#include "common/quaternion.h" 11#include "common/quaternion.h"
12#include "common/settings.h" 12#include "common/settings.h"
13#include "core/frontend/input.h" 13#include "core/frontend/input.h"
14#include "core/hle/kernel/object.h"
15#include "core/hle/service/hid/controllers/controller_base.h" 14#include "core/hle/service/hid/controllers/controller_base.h"
16 15
17namespace Kernel { 16namespace Kernel {
diff --git a/src/core/hle/service/hid/irs.h b/src/core/hle/service/hid/irs.h
index a1bcb5859..9bc6462b0 100644
--- a/src/core/hle/service/hid/irs.h
+++ b/src/core/hle/service/hid/irs.h
@@ -4,7 +4,6 @@
4 4
5#pragma once 5#pragma once
6 6
7#include "core/hle/kernel/object.h"
8#include "core/hle/service/service.h" 7#include "core/hle/service/service.h"
9 8
10namespace Core { 9namespace Core {
diff --git a/src/core/hle/service/nvflinger/buffer_queue.h b/src/core/hle/service/nvflinger/buffer_queue.h
index 044e51d08..4ec0b1506 100644
--- a/src/core/hle/service/nvflinger/buffer_queue.h
+++ b/src/core/hle/service/nvflinger/buffer_queue.h
@@ -15,7 +15,6 @@
15#include "common/swap.h" 15#include "common/swap.h"
16#include "core/hle/kernel/k_event.h" 16#include "core/hle/kernel/k_event.h"
17#include "core/hle/kernel/k_readable_event.h" 17#include "core/hle/kernel/k_readable_event.h"
18#include "core/hle/kernel/object.h"
19#include "core/hle/service/nvdrv/nvdata.h" 18#include "core/hle/service/nvdrv/nvdata.h"
20 19
21namespace Kernel { 20namespace Kernel {
diff --git a/src/core/hle/service/nvflinger/nvflinger.h b/src/core/hle/service/nvflinger/nvflinger.h
index 1c0aa8ec4..b0febdaec 100644
--- a/src/core/hle/service/nvflinger/nvflinger.h
+++ b/src/core/hle/service/nvflinger/nvflinger.h
@@ -15,7 +15,6 @@
15#include <vector> 15#include <vector>
16 16
17#include "common/common_types.h" 17#include "common/common_types.h"
18#include "core/hle/kernel/object.h"
19 18
20namespace Common { 19namespace Common {
21class Event; 20class Event;
diff --git a/src/core/hle/service/service.h b/src/core/hle/service/service.h
index 076f50b0b..884951428 100644
--- a/src/core/hle/service/service.h
+++ b/src/core/hle/service/service.h
@@ -11,7 +11,6 @@
11#include "common/common_types.h" 11#include "common/common_types.h"
12#include "common/spin_lock.h" 12#include "common/spin_lock.h"
13#include "core/hle/kernel/hle_ipc.h" 13#include "core/hle/kernel/hle_ipc.h"
14#include "core/hle/kernel/object.h"
15 14
16//////////////////////////////////////////////////////////////////////////////////////////////////// 15////////////////////////////////////////////////////////////////////////////////////////////////////
17// Namespace Service 16// Namespace Service
diff --git a/src/core/hle/service/sm/controller.cpp b/src/core/hle/service/sm/controller.cpp
index cb397fcc7..ee026e22f 100644
--- a/src/core/hle/service/sm/controller.cpp
+++ b/src/core/hle/service/sm/controller.cpp
@@ -14,7 +14,7 @@ namespace Service::SM {
14 14
15void Controller::ConvertCurrentObjectToDomain(Kernel::HLERequestContext& ctx) { 15void Controller::ConvertCurrentObjectToDomain(Kernel::HLERequestContext& ctx) {
16 ASSERT_MSG(ctx.Session()->IsSession(), "Session is already a domain"); 16 ASSERT_MSG(ctx.Session()->IsSession(), "Session is already a domain");
17 LOG_DEBUG(Service, "called, server_session={}", ctx.Session()->GetObjectId()); 17 LOG_DEBUG(Service, "called, server_session={}", ctx.Session()->GetId());
18 ctx.Session()->ConvertToDomain(); 18 ctx.Session()->ConvertToDomain();
19 19
20 IPC::ResponseBuilder rb{ctx, 3}; 20 IPC::ResponseBuilder rb{ctx, 3};
diff --git a/src/core/hle/service/sm/sm.cpp b/src/core/hle/service/sm/sm.cpp
index 71ab4b6f5..568effbc9 100644
--- a/src/core/hle/service/sm/sm.cpp
+++ b/src/core/hle/service/sm/sm.cpp
@@ -140,7 +140,7 @@ void SM::GetService(Kernel::HLERequestContext& ctx) {
140 port->EnqueueSession(&session->GetServerSession()); 140 port->EnqueueSession(&session->GetServerSession());
141 } 141 }
142 142
143 LOG_DEBUG(Service_SM, "called service={} -> session={}", name, session->GetObjectId()); 143 LOG_DEBUG(Service_SM, "called service={} -> session={}", name, session->GetId());
144 IPC::ResponseBuilder rb{ctx, 2, 0, 1, IPC::ResponseBuilder::Flags::AlwaysMoveHandles}; 144 IPC::ResponseBuilder rb{ctx, 2, 0, 1, IPC::ResponseBuilder::Flags::AlwaysMoveHandles};
145 rb.Push(RESULT_SUCCESS); 145 rb.Push(RESULT_SUCCESS);
146 rb.PushMoveObjects(session->GetClientSession()); 146 rb.PushMoveObjects(session->GetClientSession());
diff --git a/src/yuzu/debugger/wait_tree.cpp b/src/yuzu/debugger/wait_tree.cpp
index 317c42631..3ac4a9e2b 100644
--- a/src/yuzu/debugger/wait_tree.cpp
+++ b/src/yuzu/debugger/wait_tree.cpp
@@ -13,6 +13,7 @@
13#include "core/arm/arm_interface.h" 13#include "core/arm/arm_interface.h"
14#include "core/core.h" 14#include "core/core.h"
15#include "core/hle/kernel/handle_table.h" 15#include "core/hle/kernel/handle_table.h"
16#include "core/hle/kernel/k_class_token.h"
16#include "core/hle/kernel/k_readable_event.h" 17#include "core/hle/kernel/k_readable_event.h"
17#include "core/hle/kernel/k_scheduler.h" 18#include "core/hle/kernel/k_scheduler.h"
18#include "core/hle/kernel/k_synchronization_object.h" 19#include "core/hle/kernel/k_synchronization_object.h"
@@ -183,20 +184,20 @@ bool WaitTreeExpandableItem::IsExpandable() const {
183} 184}
184 185
185QString WaitTreeSynchronizationObject::GetText() const { 186QString WaitTreeSynchronizationObject::GetText() const {
186 // return tr("[%1]%2 %3") 187 return tr("[%1] %2 %3")
187 // .arg(object.GetObjectId()) 188 .arg(object.GetId())
188 // .arg(QString::fromStdString(object.GetTypeName()), 189 .arg(QString::fromStdString(object.GetTypeObj().GetName()),
189 // QString::fromStdString(object.GetName())); 190 QString::fromStdString(object.GetName()));
190
191 return tr("UNIMPLEMENTED");
192} 191}
193 192
194std::unique_ptr<WaitTreeSynchronizationObject> WaitTreeSynchronizationObject::make( 193std::unique_ptr<WaitTreeSynchronizationObject> WaitTreeSynchronizationObject::make(
195 const Kernel::KSynchronizationObject& object) { 194 const Kernel::KSynchronizationObject& object) {
196 switch (object.GetHandleType()) { 195 const auto type =
197 case Kernel::HandleType::ReadableEvent: 196 static_cast<Kernel::KClassTokenGenerator::ObjectType>(object.GetTypeObj().GetClassToken());
197 switch (type) {
198 case Kernel::KClassTokenGenerator::ObjectType::KReadableEvent:
198 return std::make_unique<WaitTreeEvent>(static_cast<const Kernel::KReadableEvent&>(object)); 199 return std::make_unique<WaitTreeEvent>(static_cast<const Kernel::KReadableEvent&>(object));
199 case Kernel::HandleType::Thread: 200 case Kernel::KClassTokenGenerator::ObjectType::KThread:
200 return std::make_unique<WaitTreeThread>(static_cast<const Kernel::KThread&>(object)); 201 return std::make_unique<WaitTreeThread>(static_cast<const Kernel::KThread&>(object));
201 default: 202 default:
202 return std::make_unique<WaitTreeSynchronizationObject>(object); 203 return std::make_unique<WaitTreeSynchronizationObject>(object);
@@ -206,12 +207,13 @@ std::unique_ptr<WaitTreeSynchronizationObject> WaitTreeSynchronizationObject::ma
206std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeSynchronizationObject::GetChildren() const { 207std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeSynchronizationObject::GetChildren() const {
207 std::vector<std::unique_ptr<WaitTreeItem>> list; 208 std::vector<std::unique_ptr<WaitTreeItem>> list;
208 209
209 const auto& threads = object.GetWaitingThreadsForDebugging(); 210 auto threads = object.GetWaitingThreadsForDebugging();
210 if (threads.empty()) { 211 if (threads.empty()) {
211 list.push_back(std::make_unique<WaitTreeText>(tr("waited by no thread"))); 212 list.push_back(std::make_unique<WaitTreeText>(tr("waited by no thread")));
212 } else { 213 } else {
213 list.push_back(std::make_unique<WaitTreeThreadList>(threads)); 214 list.push_back(std::make_unique<WaitTreeThreadList>(std::move(threads)));
214 } 215 }
216
215 return list; 217 return list;
216} 218}
217 219
@@ -379,8 +381,8 @@ WaitTreeEvent::WaitTreeEvent(const Kernel::KReadableEvent& object)
379 : WaitTreeSynchronizationObject(object) {} 381 : WaitTreeSynchronizationObject(object) {}
380WaitTreeEvent::~WaitTreeEvent() = default; 382WaitTreeEvent::~WaitTreeEvent() = default;
381 383
382WaitTreeThreadList::WaitTreeThreadList(const std::vector<Kernel::KThread*>& list) 384WaitTreeThreadList::WaitTreeThreadList(std::vector<Kernel::KThread*>&& list)
383 : thread_list(list) {} 385 : thread_list(std::move(list)) {}
384WaitTreeThreadList::~WaitTreeThreadList() = default; 386WaitTreeThreadList::~WaitTreeThreadList() = default;
385 387
386QString WaitTreeThreadList::GetText() const { 388QString WaitTreeThreadList::GetText() const {
diff --git a/src/yuzu/debugger/wait_tree.h b/src/yuzu/debugger/wait_tree.h
index bf8120a71..3dd4acab0 100644
--- a/src/yuzu/debugger/wait_tree.h
+++ b/src/yuzu/debugger/wait_tree.h
@@ -11,8 +11,9 @@
11#include <QAbstractItemModel> 11#include <QAbstractItemModel>
12#include <QDockWidget> 12#include <QDockWidget>
13#include <QTreeView> 13#include <QTreeView>
14
14#include "common/common_types.h" 15#include "common/common_types.h"
15#include "core/hle/kernel/object.h" 16#include "core/hle/kernel/k_auto_object.h"
16 17
17class EmuThread; 18class EmuThread;
18 19
@@ -149,14 +150,14 @@ public:
149class WaitTreeThreadList : public WaitTreeExpandableItem { 150class WaitTreeThreadList : public WaitTreeExpandableItem {
150 Q_OBJECT 151 Q_OBJECT
151public: 152public:
152 explicit WaitTreeThreadList(const std::vector<Kernel::KThread*>& list); 153 explicit WaitTreeThreadList(std::vector<Kernel::KThread*>&& list);
153 ~WaitTreeThreadList() override; 154 ~WaitTreeThreadList() override;
154 155
155 QString GetText() const override; 156 QString GetText() const override;
156 std::vector<std::unique_ptr<WaitTreeItem>> GetChildren() const override; 157 std::vector<std::unique_ptr<WaitTreeItem>> GetChildren() const override;
157 158
158private: 159private:
159 const std::vector<Kernel::KThread*>& thread_list; 160 std::vector<Kernel::KThread*> thread_list;
160}; 161};
161 162
162class WaitTreeModel : public QAbstractItemModel { 163class WaitTreeModel : public QAbstractItemModel {