Pica/DebugUtils: Factor out BreakPointObserverDock into its own file.
This commit is contained in:
parent
2fb1e4c9a2
commit
3f649dc9b8
|
@ -8,6 +8,7 @@ set(SRCS
|
||||||
debugger/callstack.cpp
|
debugger/callstack.cpp
|
||||||
debugger/disassembler.cpp
|
debugger/disassembler.cpp
|
||||||
debugger/graphics.cpp
|
debugger/graphics.cpp
|
||||||
|
debugger/graphics_breakpoint_observer.cpp
|
||||||
debugger/graphics_breakpoints.cpp
|
debugger/graphics_breakpoints.cpp
|
||||||
debugger/graphics_cmdlists.cpp
|
debugger/graphics_cmdlists.cpp
|
||||||
debugger/graphics_framebuffer.cpp
|
debugger/graphics_framebuffer.cpp
|
||||||
|
@ -27,6 +28,7 @@ set(HEADERS
|
||||||
debugger/callstack.h
|
debugger/callstack.h
|
||||||
debugger/disassembler.h
|
debugger/disassembler.h
|
||||||
debugger/graphics.h
|
debugger/graphics.h
|
||||||
|
debugger/graphics_breakpoint_observer.h
|
||||||
debugger/graphics_breakpoints.h
|
debugger/graphics_breakpoints.h
|
||||||
debugger/graphics_breakpoints_p.h
|
debugger/graphics_breakpoints_p.h
|
||||||
debugger/graphics_cmdlists.h
|
debugger/graphics_cmdlists.h
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
// Copyright 2014 Citra Emulator Project
|
||||||
|
// Licensed under GPLv2 or any later version
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include <QMetaType>
|
||||||
|
|
||||||
|
#include "graphics_breakpoint_observer.h"
|
||||||
|
|
||||||
|
BreakPointObserverDock::BreakPointObserverDock(std::shared_ptr<Pica::DebugContext> debug_context,
|
||||||
|
const QString& title, QWidget* parent)
|
||||||
|
: QDockWidget(title, parent), BreakPointObserver(debug_context)
|
||||||
|
{
|
||||||
|
qRegisterMetaType<Pica::DebugContext::Event>("Pica::DebugContext::Event");
|
||||||
|
|
||||||
|
connect(this, SIGNAL(Resumed()), this, SLOT(OnResumed()));
|
||||||
|
|
||||||
|
// NOTE: This signal is emitted from a non-GUI thread, but connect() takes
|
||||||
|
// care of delaying its handling to the GUI thread.
|
||||||
|
connect(this, SIGNAL(BreakPointHit(Pica::DebugContext::Event,void*)),
|
||||||
|
this, SLOT(OnBreakPointHit(Pica::DebugContext::Event,void*)),
|
||||||
|
Qt::BlockingQueuedConnection);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BreakPointObserverDock::OnPicaBreakPointHit(Pica::DebugContext::Event event, void* data)
|
||||||
|
{
|
||||||
|
emit BreakPointHit(event, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void BreakPointObserverDock::OnPicaResume()
|
||||||
|
{
|
||||||
|
emit Resumed();
|
||||||
|
}
|
|
@ -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 OnPicaBreakPointHit and OnPicaResume to public slots.
|
||||||
|
* This is because the Pica 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, private Pica::DebugContext::BreakPointObserver {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
BreakPointObserverDock(std::shared_ptr<Pica::DebugContext> debug_context, const QString& title,
|
||||||
|
QWidget* parent = nullptr);
|
||||||
|
|
||||||
|
void OnPicaBreakPointHit(Pica::DebugContext::Event event, void* data) override;
|
||||||
|
void OnPicaResume() override;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
virtual void OnBreakPointHit(Pica::DebugContext::Event event, void* data) = 0;
|
||||||
|
virtual void OnResumed() = 0;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void Resumed();
|
||||||
|
void BreakPointHit(Pica::DebugContext::Event event, void* data);
|
||||||
|
};
|
|
@ -6,7 +6,6 @@
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QMetaType>
|
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QSpinBox>
|
#include <QSpinBox>
|
||||||
|
|
||||||
|
@ -17,32 +16,6 @@
|
||||||
|
|
||||||
#include "util/spinbox.h"
|
#include "util/spinbox.h"
|
||||||
|
|
||||||
BreakPointObserverDock::BreakPointObserverDock(std::shared_ptr<Pica::DebugContext> debug_context,
|
|
||||||
const QString& title, QWidget* parent)
|
|
||||||
: QDockWidget(title, parent), BreakPointObserver(debug_context)
|
|
||||||
{
|
|
||||||
qRegisterMetaType<Pica::DebugContext::Event>("Pica::DebugContext::Event");
|
|
||||||
|
|
||||||
connect(this, SIGNAL(Resumed()), this, SLOT(OnResumed()));
|
|
||||||
|
|
||||||
// NOTE: This signal is emitted from a non-GUI thread, but connect() takes
|
|
||||||
// care of delaying its handling to the GUI thread.
|
|
||||||
connect(this, SIGNAL(BreakPointHit(Pica::DebugContext::Event,void*)),
|
|
||||||
this, SLOT(OnBreakPointHit(Pica::DebugContext::Event,void*)),
|
|
||||||
Qt::BlockingQueuedConnection);
|
|
||||||
}
|
|
||||||
|
|
||||||
void BreakPointObserverDock::OnPicaBreakPointHit(Pica::DebugContext::Event event, void* data)
|
|
||||||
{
|
|
||||||
emit BreakPointHit(event, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
void BreakPointObserverDock::OnPicaResume()
|
|
||||||
{
|
|
||||||
emit Resumed();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
GraphicsFramebufferWidget::GraphicsFramebufferWidget(std::shared_ptr<Pica::DebugContext> debug_context,
|
GraphicsFramebufferWidget::GraphicsFramebufferWidget(std::shared_ptr<Pica::DebugContext> debug_context,
|
||||||
QWidget* parent)
|
QWidget* parent)
|
||||||
: BreakPointObserverDock(debug_context, tr("Pica Framebuffer"), parent),
|
: BreakPointObserverDock(debug_context, tr("Pica Framebuffer"), parent),
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
#include <QDockWidget>
|
#include <QDockWidget>
|
||||||
|
|
||||||
#include "video_core/debug_utils/debug_utils.h"
|
#include "graphics_breakpoint_observer.h"
|
||||||
|
|
||||||
class QComboBox;
|
class QComboBox;
|
||||||
class QLabel;
|
class QLabel;
|
||||||
|
@ -14,28 +14,6 @@ class QSpinBox;
|
||||||
|
|
||||||
class CSpinBox;
|
class CSpinBox;
|
||||||
|
|
||||||
// Utility class which forwards calls to OnPicaBreakPointHit and OnPicaResume to public slots.
|
|
||||||
// This is because the Pica 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, Pica::DebugContext::BreakPointObserver {
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
BreakPointObserverDock(std::shared_ptr<Pica::DebugContext> debug_context, const QString& title,
|
|
||||||
QWidget* parent = nullptr);
|
|
||||||
|
|
||||||
void OnPicaBreakPointHit(Pica::DebugContext::Event event, void* data) override;
|
|
||||||
void OnPicaResume() override;
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
virtual void OnBreakPointHit(Pica::DebugContext::Event event, void* data) = 0;
|
|
||||||
virtual void OnResumed() = 0;
|
|
||||||
|
|
||||||
signals:
|
|
||||||
void Resumed();
|
|
||||||
void BreakPointHit(Pica::DebugContext::Event event, void* data);
|
|
||||||
};
|
|
||||||
|
|
||||||
class GraphicsFramebufferWidget : public BreakPointObserverDock {
|
class GraphicsFramebufferWidget : public BreakPointObserverDock {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
|
Reference in New Issue