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 <QComboBox> | ||||||
| #include <QFileDialog> | #include <QFileDialog> | ||||||
| #include <QLabel> | #include <QLabel> | ||||||
|  | #include <QMessageBox> | ||||||
| #include <QPushButton> | #include <QPushButton> | ||||||
| #include <QSpinBox> | #include <QSpinBox> | ||||||
| 
 | 
 | ||||||
|  | @ -49,8 +50,6 @@ GraphicsTracingWidget::GraphicsTracingWidget(std::shared_ptr<Pica::DebugContext> | ||||||
|     } |     } | ||||||
|     main_widget->setLayout(main_layout); |     main_widget->setLayout(main_layout); | ||||||
|     setWidget(main_widget); |     setWidget(main_widget); | ||||||
| 
 |  | ||||||
|     // TODO: Make sure to have this widget disabled as soon as emulation is started!
 |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GraphicsTracingWidget::StartRecording() { | void GraphicsTracingWidget::StartRecording() { | ||||||
|  | @ -121,3 +120,33 @@ void GraphicsTracingWidget::OnBreakPointHit(Pica::DebugContext::Event event, voi | ||||||
| void GraphicsTracingWidget::OnResumed() { | void GraphicsTracingWidget::OnResumed() { | ||||||
|     widget()->setEnabled(false); |     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" | #include "graphics_breakpoint_observer.h" | ||||||
| 
 | 
 | ||||||
|  | class EmuThread; | ||||||
|  | 
 | ||||||
| class GraphicsTracingWidget : public BreakPointObserverDock { | class GraphicsTracingWidget : public BreakPointObserverDock { | ||||||
|     Q_OBJECT |     Q_OBJECT | ||||||
| 
 | 
 | ||||||
|  | @ -20,6 +22,9 @@ private slots: | ||||||
|     void OnBreakPointHit(Pica::DebugContext::Event event, void* data) override; |     void OnBreakPointHit(Pica::DebugContext::Event event, void* data) override; | ||||||
|     void OnResumed() override; |     void OnResumed() override; | ||||||
| 
 | 
 | ||||||
|  |     void OnEmulationStarting(EmuThread* emu_thread); | ||||||
|  |     void OnEmulationStopping(); | ||||||
|  | 
 | ||||||
| signals: | signals: | ||||||
|     void SetStartTracingButtonEnabled(bool enable); |     void SetStartTracingButtonEnabled(bool enable); | ||||||
|     void SetStopTracingButtonEnabled(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(EmulationStopping()), registersWidget, SLOT(OnEmulationStopping())); | ||||||
|     connect(this, SIGNAL(EmulationStarting(EmuThread*)), render_window, SLOT(OnEmulationStarting(EmuThread*))); |     connect(this, SIGNAL(EmulationStarting(EmuThread*)), render_window, SLOT(OnEmulationStarting(EmuThread*))); | ||||||
|     connect(this, SIGNAL(EmulationStopping()), render_window, SLOT(OnEmulationStopping())); |     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
 |     // Setup hotkeys
 | ||||||
|     RegisterHotkey("Main Window", "Load File", QKeySequence::Open); |     RegisterHotkey("Main Window", "Load File", QKeySequence::Open); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue