mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	citra-qt: Properly disable the CiTrace widget upon starting/stopping emulation.
This commit is contained in:
		
							parent
							
								
									902fa4da52
								
							
						
					
					
						commit
						01a526e1c4
					
				
					 3 changed files with 39 additions and 2 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue