aboutsummaryrefslogtreecommitdiff
path: root/src/yuzu/debugger/graphics/graphics_breakpoint_observer.h
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2018-03-22 15:19:35 -0500
committerSubv <subv2112@gmail.com>2018-03-24 11:31:49 -0500
commit77fd0d47e70968bcbc87a3b5607cd29e6211f656 (patch)
tree54e91cede780bbd5bec2612547a61bdd799e36af /src/yuzu/debugger/graphics/graphics_breakpoint_observer.h
parent1b8d798835c2d39c2867f53d8dcacdc7d0ba0d15 (diff)
Frontend: Ported the GPU breakpoints and surface viewer widgets from citra.
Diffstat (limited to 'src/yuzu/debugger/graphics/graphics_breakpoint_observer.h')
-rw-r--r--src/yuzu/debugger/graphics/graphics_breakpoint_observer.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/yuzu/debugger/graphics/graphics_breakpoint_observer.h b/src/yuzu/debugger/graphics/graphics_breakpoint_observer.h
new file mode 100644
index 000000000..9d05493cf
--- /dev/null
+++ b/src/yuzu/debugger/graphics/graphics_breakpoint_observer.h
@@ -0,0 +1,33 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <QDockWidget>
+#include "video_core/debug_utils/debug_utils.h"
+
+/**
+ * Utility class which forwards calls to OnMaxwellBreakPointHit and OnMaxwellResume to public slots.
+ * This is because the Maxwell breakpoint callbacks are called from a non-GUI thread, while
+ * the widget usually wants to perform reactions in the GUI thread.
+ */
+class BreakPointObserverDock : public QDockWidget,
+ protected Tegra::DebugContext::BreakPointObserver {
+ Q_OBJECT
+
+public:
+ BreakPointObserverDock(std::shared_ptr<Tegra::DebugContext> debug_context, const QString& title,
+ QWidget* parent = nullptr);
+
+ void OnMaxwellBreakPointHit(Tegra::DebugContext::Event event, void* data) override;
+ void OnMaxwellResume() override;
+
+private slots:
+ virtual void OnBreakPointHit(Tegra::DebugContext::Event event, void* data) = 0;
+ virtual void OnResumed() = 0;
+
+signals:
+ void Resumed();
+ void BreakPointHit(Tegra::DebugContext::Event event, void* data);
+};