diff options
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/hle/kernel/k_handle_table.cpp | 6 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_handle_table.h | 2 | 
2 files changed, 8 insertions, 0 deletions
diff --git a/src/core/hle/kernel/k_handle_table.cpp b/src/core/hle/kernel/k_handle_table.cpp index 6a420d5b0..d720c2dda 100644 --- a/src/core/hle/kernel/k_handle_table.cpp +++ b/src/core/hle/kernel/k_handle_table.cpp @@ -13,6 +13,7 @@ ResultCode KHandleTable::Finalize() {      // Get the table and clear our record of it.      u16 saved_table_size = 0;      { +        KScopedDisableDispatch dd(kernel);          KScopedSpinLock lk(m_lock);          std::swap(m_table_size, saved_table_size); @@ -43,6 +44,7 @@ bool KHandleTable::Remove(Handle handle) {      // Find the object and free the entry.      KAutoObject* obj = nullptr;      { +        KScopedDisableDispatch dd(kernel);          KScopedSpinLock lk(m_lock);          if (this->IsValidHandle(handle)) { @@ -61,6 +63,7 @@ bool KHandleTable::Remove(Handle handle) {  }  ResultCode KHandleTable::Add(Handle* out_handle, KAutoObject* obj, u16 type) { +    KScopedDisableDispatch dd(kernel);      KScopedSpinLock lk(m_lock);      // Never exceed our capacity. @@ -83,6 +86,7 @@ ResultCode KHandleTable::Add(Handle* out_handle, KAutoObject* obj, u16 type) {  }  ResultCode KHandleTable::Reserve(Handle* out_handle) { +    KScopedDisableDispatch dd(kernel);      KScopedSpinLock lk(m_lock);      // Never exceed our capacity. @@ -93,6 +97,7 @@ ResultCode KHandleTable::Reserve(Handle* out_handle) {  }  void KHandleTable::Unreserve(Handle handle) { +    KScopedDisableDispatch dd(kernel);      KScopedSpinLock lk(m_lock);      // Unpack the handle. @@ -111,6 +116,7 @@ void KHandleTable::Unreserve(Handle handle) {  }  void KHandleTable::Register(Handle handle, KAutoObject* obj, u16 type) { +    KScopedDisableDispatch dd(kernel);      KScopedSpinLock lk(m_lock);      // Unpack the handle. diff --git a/src/core/hle/kernel/k_handle_table.h b/src/core/hle/kernel/k_handle_table.h index 2ff6aa160..75dcec7df 100644 --- a/src/core/hle/kernel/k_handle_table.h +++ b/src/core/hle/kernel/k_handle_table.h @@ -69,6 +69,7 @@ public:      template <typename T = KAutoObject>      KScopedAutoObject<T> GetObjectWithoutPseudoHandle(Handle handle) const {          // Lock and look up in table. +        KScopedDisableDispatch dd(kernel);          KScopedSpinLock lk(m_lock);          if constexpr (std::is_same_v<T, KAutoObject>) { @@ -123,6 +124,7 @@ public:          size_t num_opened;          {              // Lock the table. +            KScopedDisableDispatch dd(kernel);              KScopedSpinLock lk(m_lock);              for (num_opened = 0; num_opened < num_handles; num_opened++) {                  // Get the current handle.  | 
