diff options
Diffstat (limited to 'src/yuzu/debugger')
-rw-r--r-- | src/yuzu/debugger/wait_tree.cpp | 20 | ||||
-rw-r--r-- | src/yuzu/debugger/wait_tree.h | 30 |
2 files changed, 49 insertions, 1 deletions
diff --git a/src/yuzu/debugger/wait_tree.cpp b/src/yuzu/debugger/wait_tree.cpp index eac0c05f2..6c2cd967e 100644 --- a/src/yuzu/debugger/wait_tree.cpp +++ b/src/yuzu/debugger/wait_tree.cpp @@ -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; diff --git a/src/yuzu/debugger/wait_tree.h b/src/yuzu/debugger/wait_tree.h index 513b3c45d..defbf734f 100644 --- a/src/yuzu/debugger/wait_tree.h +++ b/src/yuzu/debugger/wait_tree.h @@ -4,11 +4,15 @@ #pragma once +#include <cstddef> +#include <memory> +#include <vector> + #include <QAbstractItemModel> #include <QDockWidget> #include <QTreeView> #include <boost/container/flat_set.hpp> -#include "core/core.h" +#include "common/common_types.h" #include "core/hle/kernel/object.h" class EmuThread; @@ -25,6 +29,7 @@ class WaitTreeThread; class WaitTreeItem : public QObject { Q_OBJECT public: + WaitTreeItem(); ~WaitTreeItem() override; virtual bool IsExpandable() const; @@ -49,6 +54,8 @@ class WaitTreeText : public WaitTreeItem { Q_OBJECT public: explicit WaitTreeText(const QString& text); + ~WaitTreeText() override; + QString GetText() const override; private: @@ -58,6 +65,9 @@ private: class WaitTreeExpandableItem : public WaitTreeItem { Q_OBJECT public: + WaitTreeExpandableItem(); + ~WaitTreeExpandableItem() override; + bool IsExpandable() const override; }; @@ -65,6 +75,8 @@ class WaitTreeMutexInfo : public WaitTreeExpandableItem { Q_OBJECT public: explicit WaitTreeMutexInfo(VAddr mutex_address); + ~WaitTreeMutexInfo() override; + QString GetText() const override; std::vector<std::unique_ptr<WaitTreeItem>> GetChildren() const override; @@ -79,6 +91,8 @@ class WaitTreeCallstack : public WaitTreeExpandableItem { Q_OBJECT public: explicit WaitTreeCallstack(const Kernel::Thread& thread); + ~WaitTreeCallstack() override; + QString GetText() const override; std::vector<std::unique_ptr<WaitTreeItem>> GetChildren() const override; @@ -90,6 +104,8 @@ class WaitTreeWaitObject : public WaitTreeExpandableItem { Q_OBJECT public: explicit WaitTreeWaitObject(const Kernel::WaitObject& object); + ~WaitTreeWaitObject() override; + static std::unique_ptr<WaitTreeWaitObject> make(const Kernel::WaitObject& object); QString GetText() const override; std::vector<std::unique_ptr<WaitTreeItem>> GetChildren() const override; @@ -105,6 +121,8 @@ class WaitTreeObjectList : public WaitTreeExpandableItem { public: WaitTreeObjectList(const std::vector<Kernel::SharedPtr<Kernel::WaitObject>>& list, bool wait_all); + ~WaitTreeObjectList() override; + QString GetText() const override; std::vector<std::unique_ptr<WaitTreeItem>> GetChildren() const override; @@ -117,6 +135,8 @@ class WaitTreeThread : public WaitTreeWaitObject { Q_OBJECT public: explicit WaitTreeThread(const Kernel::Thread& thread); + ~WaitTreeThread() override; + QString GetText() const override; QColor GetColor() const override; std::vector<std::unique_ptr<WaitTreeItem>> GetChildren() const override; @@ -126,6 +146,8 @@ class WaitTreeEvent : public WaitTreeWaitObject { Q_OBJECT public: explicit WaitTreeEvent(const Kernel::Event& object); + ~WaitTreeEvent() override; + std::vector<std::unique_ptr<WaitTreeItem>> GetChildren() const override; }; @@ -133,6 +155,8 @@ class WaitTreeTimer : public WaitTreeWaitObject { Q_OBJECT public: explicit WaitTreeTimer(const Kernel::Timer& object); + ~WaitTreeTimer() override; + std::vector<std::unique_ptr<WaitTreeItem>> GetChildren() const override; }; @@ -140,6 +164,8 @@ class WaitTreeThreadList : public WaitTreeExpandableItem { Q_OBJECT public: explicit WaitTreeThreadList(const std::vector<Kernel::SharedPtr<Kernel::Thread>>& list); + ~WaitTreeThreadList() override; + QString GetText() const override; std::vector<std::unique_ptr<WaitTreeItem>> GetChildren() const override; @@ -152,6 +178,7 @@ class WaitTreeModel : public QAbstractItemModel { public: explicit WaitTreeModel(QObject* parent = nullptr); + ~WaitTreeModel() override; QVariant data(const QModelIndex& index, int role) const override; QModelIndex index(int row, int column, const QModelIndex& parent) const override; @@ -171,6 +198,7 @@ class WaitTreeWidget : public QDockWidget { public: explicit WaitTreeWidget(QWidget* parent = nullptr); + ~WaitTreeWidget() override; public slots: void OnDebugModeEntered(); |