mirror of
				https://github.com/dolphin-emu/dolphin.git
				synced 2025-10-25 17:39:09 +00:00 
			
		
		
		
	This gets rid of a blocking operation, improving performance and fixing https://bugs.dolphin-emu.org/issues/12893. This also makes us no longer directly access the state of certain UI elements from the CPU thread, which probably wasn't thread-safe but doesn't seem to have caused any observable issues so far.
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			821 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			821 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright 2019 Dolphin Emulator Project
 | |
| // SPDX-License-Identifier: GPL-2.0-or-later
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <QCheckBox>
 | |
| 
 | |
| #include "DolphinQt/TAS/TASControlState.h"
 | |
| 
 | |
| class QMouseEvent;
 | |
| class TASInputWindow;
 | |
| 
 | |
| class TASCheckBox : public QCheckBox
 | |
| {
 | |
|   Q_OBJECT
 | |
| public:
 | |
|   explicit TASCheckBox(const QString& text, TASInputWindow* parent);
 | |
| 
 | |
|   // Can be called from the CPU thread
 | |
|   bool GetValue() const;
 | |
|   // Must be called from the CPU thread
 | |
|   void OnControllerValueChanged(bool new_value);
 | |
| 
 | |
| protected:
 | |
|   void mousePressEvent(QMouseEvent* event) override;
 | |
| 
 | |
| private slots:
 | |
|   void OnUIValueChanged(int new_value);
 | |
|   void ApplyControllerValueChange();
 | |
| 
 | |
| private:
 | |
|   const TASInputWindow* m_parent;
 | |
|   TASControlState m_state;
 | |
|   int m_frame_turbo_started = 0;
 | |
|   int m_turbo_press_frames = 0;
 | |
|   int m_turbo_total_frames = 0;
 | |
| };
 |