diff options
author | Tony Wasserka <NeoBrainX@gmail.com> | 2014-10-25 20:28:24 +0200 |
---|---|---|
committer | Tony Wasserka <NeoBrainX@gmail.com> | 2014-12-09 16:37:34 +0100 |
commit | c63a495de6f4b4729cb3c24dc65ae019a39bbb0d (patch) | |
tree | 1388bfc495cef3a2ce22f65b8299662e2fa11c13 /src/citra_qt/debugger/graphics_breakpoints.hxx | |
parent | Pica/DebugUtils: Add breakpoint functionality. (diff) | |
download | yuzu-c63a495de6f4b4729cb3c24dc65ae019a39bbb0d.tar yuzu-c63a495de6f4b4729cb3c24dc65ae019a39bbb0d.tar.gz yuzu-c63a495de6f4b4729cb3c24dc65ae019a39bbb0d.tar.bz2 yuzu-c63a495de6f4b4729cb3c24dc65ae019a39bbb0d.tar.lz yuzu-c63a495de6f4b4729cb3c24dc65ae019a39bbb0d.tar.xz yuzu-c63a495de6f4b4729cb3c24dc65ae019a39bbb0d.tar.zst yuzu-c63a495de6f4b4729cb3c24dc65ae019a39bbb0d.zip |
Diffstat (limited to '')
-rw-r--r-- | src/citra_qt/debugger/graphics_breakpoints.hxx | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/citra_qt/debugger/graphics_breakpoints.hxx b/src/citra_qt/debugger/graphics_breakpoints.hxx new file mode 100644 index 000000000..edc41283e --- /dev/null +++ b/src/citra_qt/debugger/graphics_breakpoints.hxx @@ -0,0 +1,78 @@ +// Copyright 2014 Citra Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +#pragma once + +#include <memory> + +#include <QAbstractListModel> +#include <QDockWidget> + +#include "video_core/debug_utils/debug_utils.h" + +class QLabel; +class QPushButton; +class QTreeView; + +class BreakPointModel : public QAbstractListModel { + Q_OBJECT + +public: + enum { + Role_IsEnabled = Qt::UserRole, + }; + + BreakPointModel(std::shared_ptr<Pica::DebugContext> context, QObject* parent); + + int columnCount(const QModelIndex& parent = QModelIndex()) const override; + int rowCount(const QModelIndex& parent = QModelIndex()) const override; + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; + QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; + + bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole); + +public slots: + void OnBreakPointHit(Pica::DebugContext::Event event); + void OnResumed(); + +private: + bool at_breakpoint; + Pica::DebugContext::Event active_breakpoint; + std::weak_ptr<Pica::DebugContext> context_weak; +}; + +class GraphicsBreakPointsWidget : public QDockWidget, Pica::DebugContext::BreakPointObserver { + Q_OBJECT + + using Event = Pica::DebugContext::Event; + +public: + GraphicsBreakPointsWidget(std::shared_ptr<Pica::DebugContext> debug_context, + QWidget* parent = nullptr); + + void OnPicaBreakPointHit(Pica::DebugContext::Event event, void* data) override; + void OnPicaResume() override; + +public slots: + void OnBreakPointHit(Pica::DebugContext::Event event, void* data); + void OnResumeRequested(); + void OnResumed(); + void OnBreakpointSelectionChanged(const QModelIndex&); + void OnToggleBreakpointEnabled(); + +signals: + void Resumed(); + void BreakPointHit(Pica::DebugContext::Event event, void* data); + void BreakPointsChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight); + +private: + void UpdateToggleBreakpointButton(const QModelIndex& index); + + QLabel* status_text; + QPushButton* resume_button; + QPushButton* toggle_breakpoint_button; + + BreakPointModel* breakpoint_model; + QTreeView* breakpoint_list; +}; |