summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/object.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel/object.h')
-rw-r--r--src/core/hle/kernel/object.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/core/hle/kernel/object.h b/src/core/hle/kernel/object.h
index 526ac9cc3..b054cbf7d 100644
--- a/src/core/hle/kernel/object.h
+++ b/src/core/hle/kernel/object.h
@@ -14,6 +14,8 @@
14 14
15namespace Kernel { 15namespace Kernel {
16 16
17class KernelCore;
18
17using Handle = u32; 19using Handle = u32;
18 20
19enum class HandleType : u32 { 21enum class HandleType : u32 {
@@ -40,6 +42,7 @@ enum class ResetType {
40 42
41class Object : NonCopyable { 43class Object : NonCopyable {
42public: 44public:
45 explicit Object(KernelCore& kernel);
43 virtual ~Object(); 46 virtual ~Object();
44 47
45 /// Returns a unique identifier for the object. For debugging purposes only. 48 /// Returns a unique identifier for the object. For debugging purposes only.
@@ -61,15 +64,16 @@ public:
61 */ 64 */
62 bool IsWaitable() const; 65 bool IsWaitable() const;
63 66
64public: 67protected:
65 static std::atomic<u32> next_object_id; 68 /// The kernel instance this object was created under.
69 KernelCore& kernel;
66 70
67private: 71private:
68 friend void intrusive_ptr_add_ref(Object*); 72 friend void intrusive_ptr_add_ref(Object*);
69 friend void intrusive_ptr_release(Object*); 73 friend void intrusive_ptr_release(Object*);
70 74
71 std::atomic<u32> ref_count{0}; 75 std::atomic<u32> ref_count{0};
72 std::atomic<u32> object_id{next_object_id++}; 76 std::atomic<u32> object_id{0};
73}; 77};
74 78
75// Special functions used by boost::instrusive_ptr to do automatic ref-counting 79// Special functions used by boost::instrusive_ptr to do automatic ref-counting