mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	citra-qt: Properly disable the CiTrace widget upon starting/stopping emulation.
This commit is contained in:
		
							parent
							
								
									902fa4da52
								
							
						
					
					
						commit
						01a526e1c4
					
				@ -8,6 +8,7 @@
 | 
			
		||||
#include <QComboBox>
 | 
			
		||||
#include <QFileDialog>
 | 
			
		||||
#include <QLabel>
 | 
			
		||||
#include <QMessageBox>
 | 
			
		||||
#include <QPushButton>
 | 
			
		||||
#include <QSpinBox>
 | 
			
		||||
 | 
			
		||||
@ -49,8 +50,6 @@ GraphicsTracingWidget::GraphicsTracingWidget(std::shared_ptr<Pica::DebugContext>
 | 
			
		||||
    }
 | 
			
		||||
    main_widget->setLayout(main_layout);
 | 
			
		||||
    setWidget(main_widget);
 | 
			
		||||
 | 
			
		||||
    // TODO: Make sure to have this widget disabled as soon as emulation is started!
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void GraphicsTracingWidget::StartRecording() {
 | 
			
		||||
@ -121,3 +120,33 @@ void GraphicsTracingWidget::OnBreakPointHit(Pica::DebugContext::Event event, voi
 | 
			
		||||
void GraphicsTracingWidget::OnResumed() {
 | 
			
		||||
    widget()->setEnabled(false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void GraphicsTracingWidget::OnEmulationStarting(EmuThread* emu_thread) {
 | 
			
		||||
    // Disable tracing starting/stopping until a GPU breakpoint is reached
 | 
			
		||||
    widget()->setEnabled(false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void GraphicsTracingWidget::OnEmulationStopping() {
 | 
			
		||||
    // TODO: Is it safe to access the context here?
 | 
			
		||||
 | 
			
		||||
    auto context = context_weak.lock();
 | 
			
		||||
    if (!context)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if (context->recorder) {
 | 
			
		||||
        auto reply = QMessageBox::question(this, tr("CiTracing still active"),
 | 
			
		||||
                tr("A CiTrace is still being recorded. Do you want to save it? If not, all recorded data will be discarded."),
 | 
			
		||||
                QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
 | 
			
		||||
 | 
			
		||||
        if (reply == QMessageBox::Yes) {
 | 
			
		||||
            StopRecording();
 | 
			
		||||
        } else {
 | 
			
		||||
            AbortRecording();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // If the widget was disabled before, enable it now to allow starting
 | 
			
		||||
    // tracing before starting the next emulation session
 | 
			
		||||
    widget()->setEnabled(true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -6,6 +6,8 @@
 | 
			
		||||
 | 
			
		||||
#include "graphics_breakpoint_observer.h"
 | 
			
		||||
 | 
			
		||||
class EmuThread;
 | 
			
		||||
 | 
			
		||||
class GraphicsTracingWidget : public BreakPointObserverDock {
 | 
			
		||||
    Q_OBJECT
 | 
			
		||||
 | 
			
		||||
@ -20,6 +22,9 @@ private slots:
 | 
			
		||||
    void OnBreakPointHit(Pica::DebugContext::Event event, void* data) override;
 | 
			
		||||
    void OnResumed() override;
 | 
			
		||||
 | 
			
		||||
    void OnEmulationStarting(EmuThread* emu_thread);
 | 
			
		||||
    void OnEmulationStopping();
 | 
			
		||||
 | 
			
		||||
signals:
 | 
			
		||||
    void SetStartTracingButtonEnabled(bool enable);
 | 
			
		||||
    void SetStopTracingButtonEnabled(bool enable);
 | 
			
		||||
 | 
			
		||||
@ -154,6 +154,9 @@ GMainWindow::GMainWindow() : emu_thread(nullptr)
 | 
			
		||||
    connect(this, SIGNAL(EmulationStopping()), registersWidget, SLOT(OnEmulationStopping()));
 | 
			
		||||
    connect(this, SIGNAL(EmulationStarting(EmuThread*)), render_window, SLOT(OnEmulationStarting(EmuThread*)));
 | 
			
		||||
    connect(this, SIGNAL(EmulationStopping()), render_window, SLOT(OnEmulationStopping()));
 | 
			
		||||
    connect(this, SIGNAL(EmulationStarting(EmuThread*)), graphicsTracingWidget, SLOT(OnEmulationStarting(EmuThread*)));
 | 
			
		||||
    connect(this, SIGNAL(EmulationStopping()), graphicsTracingWidget, SLOT(OnEmulationStopping()));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // Setup hotkeys
 | 
			
		||||
    RegisterHotkey("Main Window", "Load File", QKeySequence::Open);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user