|
|
|
@ -9,11 +9,14 @@
|
|
|
|
|
#include "core/core.h"
|
|
|
|
|
#include "core/hle/kernel/event.h"
|
|
|
|
|
#include "core/hle/kernel/handle_table.h"
|
|
|
|
|
#include "core/hle/kernel/kernel.h"
|
|
|
|
|
#include "core/hle/kernel/mutex.h"
|
|
|
|
|
#include "core/hle/kernel/scheduler.h"
|
|
|
|
|
#include "core/hle/kernel/thread.h"
|
|
|
|
|
#include "core/hle/kernel/timer.h"
|
|
|
|
|
#include "core/hle/kernel/wait_object.h"
|
|
|
|
|
|
|
|
|
|
WaitTreeItem::WaitTreeItem() = default;
|
|
|
|
|
WaitTreeItem::~WaitTreeItem() = default;
|
|
|
|
|
|
|
|
|
|
QColor WaitTreeItem::GetColor() const {
|
|
|
|
@ -71,6 +74,7 @@ std::vector<std::unique_ptr<WaitTreeThread>> WaitTreeItem::MakeThreadItemList()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WaitTreeText::WaitTreeText(const QString& t) : text(t) {}
|
|
|
|
|
WaitTreeText::~WaitTreeText() = default;
|
|
|
|
|
|
|
|
|
|
QString WaitTreeText::GetText() const {
|
|
|
|
|
return text;
|
|
|
|
@ -84,6 +88,8 @@ WaitTreeMutexInfo::WaitTreeMutexInfo(VAddr mutex_address) : mutex_address(mutex_
|
|
|
|
|
owner = handle_table.Get<Kernel::Thread>(owner_handle);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WaitTreeMutexInfo::~WaitTreeMutexInfo() = default;
|
|
|
|
|
|
|
|
|
|
QString WaitTreeMutexInfo::GetText() const {
|
|
|
|
|
return tr("waiting for mutex 0x%1").arg(mutex_address, 16, 16, QLatin1Char('0'));
|
|
|
|
|
}
|
|
|
|
@ -102,6 +108,7 @@ std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeMutexInfo::GetChildren() cons
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WaitTreeCallstack::WaitTreeCallstack(const Kernel::Thread& thread) : thread(thread) {}
|
|
|
|
|
WaitTreeCallstack::~WaitTreeCallstack() = default;
|
|
|
|
|
|
|
|
|
|
QString WaitTreeCallstack::GetText() const {
|
|
|
|
|
return tr("Call stack");
|
|
|
|
@ -126,6 +133,10 @@ std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeCallstack::GetChildren() cons
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WaitTreeWaitObject::WaitTreeWaitObject(const Kernel::WaitObject& o) : object(o) {}
|
|
|
|
|
WaitTreeWaitObject::~WaitTreeWaitObject() = default;
|
|
|
|
|
|
|
|
|
|
WaitTreeExpandableItem::WaitTreeExpandableItem() = default;
|
|
|
|
|
WaitTreeExpandableItem::~WaitTreeExpandableItem() = default;
|
|
|
|
|
|
|
|
|
|
bool WaitTreeExpandableItem::IsExpandable() const {
|
|
|
|
|
return true;
|
|
|
|
@ -180,6 +191,8 @@ WaitTreeObjectList::WaitTreeObjectList(
|
|
|
|
|
const std::vector<Kernel::SharedPtr<Kernel::WaitObject>>& list, bool w_all)
|
|
|
|
|
: object_list(list), wait_all(w_all) {}
|
|
|
|
|
|
|
|
|
|
WaitTreeObjectList::~WaitTreeObjectList() = default;
|
|
|
|
|
|
|
|
|
|
QString WaitTreeObjectList::GetText() const {
|
|
|
|
|
if (wait_all)
|
|
|
|
|
return tr("waiting for all objects");
|
|
|
|
@ -194,6 +207,7 @@ std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeObjectList::GetChildren() con
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WaitTreeThread::WaitTreeThread(const Kernel::Thread& thread) : WaitTreeWaitObject(thread) {}
|
|
|
|
|
WaitTreeThread::~WaitTreeThread() = default;
|
|
|
|
|
|
|
|
|
|
QString WaitTreeThread::GetText() const {
|
|
|
|
|
const auto& thread = static_cast<const Kernel::Thread&>(object);
|
|
|
|
@ -312,6 +326,7 @@ std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeThread::GetChildren() const {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WaitTreeEvent::WaitTreeEvent(const Kernel::Event& object) : WaitTreeWaitObject(object) {}
|
|
|
|
|
WaitTreeEvent::~WaitTreeEvent() = default;
|
|
|
|
|
|
|
|
|
|
std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeEvent::GetChildren() const {
|
|
|
|
|
std::vector<std::unique_ptr<WaitTreeItem>> list(WaitTreeWaitObject::GetChildren());
|
|
|
|
@ -323,6 +338,7 @@ std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeEvent::GetChildren() const {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WaitTreeTimer::WaitTreeTimer(const Kernel::Timer& object) : WaitTreeWaitObject(object) {}
|
|
|
|
|
WaitTreeTimer::~WaitTreeTimer() = default;
|
|
|
|
|
|
|
|
|
|
std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeTimer::GetChildren() const {
|
|
|
|
|
std::vector<std::unique_ptr<WaitTreeItem>> list(WaitTreeWaitObject::GetChildren());
|
|
|
|
@ -340,6 +356,7 @@ std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeTimer::GetChildren() const {
|
|
|
|
|
|
|
|
|
|
WaitTreeThreadList::WaitTreeThreadList(const std::vector<Kernel::SharedPtr<Kernel::Thread>>& list)
|
|
|
|
|
: thread_list(list) {}
|
|
|
|
|
WaitTreeThreadList::~WaitTreeThreadList() = default;
|
|
|
|
|
|
|
|
|
|
QString WaitTreeThreadList::GetText() const {
|
|
|
|
|
return tr("waited by thread");
|
|
|
|
@ -353,6 +370,7 @@ std::vector<std::unique_ptr<WaitTreeItem>> WaitTreeThreadList::GetChildren() con
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WaitTreeModel::WaitTreeModel(QObject* parent) : QAbstractItemModel(parent) {}
|
|
|
|
|
WaitTreeModel::~WaitTreeModel() = default;
|
|
|
|
|
|
|
|
|
|
QModelIndex WaitTreeModel::index(int row, int column, const QModelIndex& parent) const {
|
|
|
|
|
if (!hasIndex(row, column, parent))
|
|
|
|
@ -421,6 +439,8 @@ WaitTreeWidget::WaitTreeWidget(QWidget* parent) : QDockWidget(tr("Wait Tree"), p
|
|
|
|
|
setEnabled(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WaitTreeWidget::~WaitTreeWidget() = default;
|
|
|
|
|
|
|
|
|
|
void WaitTreeWidget::OnDebugModeEntered() {
|
|
|
|
|
if (!Core::System::GetInstance().IsPoweredOn())
|
|
|
|
|
return;
|
|
|
|
|