|
|
@@ -81,9 +81,8 @@ QString WaitTreeText::GetText() const {
|
|
|
return text;
|
|
|
}
|
|
|
|
|
|
-WaitTreeMutexInfo::WaitTreeMutexInfo(VAddr mutex_address) : mutex_address(mutex_address) {
|
|
|
- const auto& handle_table = Core::CurrentProcess()->GetHandleTable();
|
|
|
-
|
|
|
+WaitTreeMutexInfo::WaitTreeMutexInfo(VAddr mutex_address, const Kernel::HandleTable& handle_table)
|
|
|
+ : mutex_address(mutex_address) {
|
|
|
mutex_value = Memory::Read32(mutex_address);
|
|
|
owner_handle = static_cast<Kernel::Handle>(mutex_value & Kernel::Mutex::MutexOwnerMask);
|
|
|
owner = handle_table.Get<Kernel::Thread>(owner_handle);
|
|
|
@@ -316,7 +315,8 @@ std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeThread::GetChildren() const {
|
|
|
|
|
|
const VAddr mutex_wait_address = thread.GetMutexWaitAddress();
|
|
|
if (mutex_wait_address != 0) {
|
|
|
- list.push_back(std::make_unique<WaitTreeMutexInfo>(mutex_wait_address));
|
|
|
+ const auto& handle_table = thread.GetOwnerProcess()->GetHandleTable();
|
|
|
+ list.push_back(std::make_unique<WaitTreeMutexInfo>(mutex_wait_address, handle_table));
|
|
|
} else {
|
|
|
list.push_back(std::make_unique<WaitTreeText>(tr("not waiting for mutex")));
|
|
|
}
|