| 
									
										
										
										
											2015-11-27 00:33:07 -08:00
										 |  |  | // Copyright 2015 Dolphin Emulator Project
 | 
					
						
							|  |  |  | // Licensed under GPLv2+
 | 
					
						
							|  |  |  | // Refer to the license.txt file included.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <QMutex>
 | 
					
						
							|  |  |  | #include <QObject>
 | 
					
						
							|  |  |  | #include <QSize>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Singleton that talks to the Core via the interface defined in Core/Host.h.
 | 
					
						
							|  |  |  | // Because Host_* calls might come from different threads than the MainWindow,
 | 
					
						
							|  |  |  | // the Host class communicates with it via signals/slots only.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Many of the Host_* functions are ignored, and some shouldn't exist.
 | 
					
						
							|  |  |  | class Host final : public QObject | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   Q_OBJECT | 
					
						
							| 
									
										
										
										
											2015-11-27 00:33:07 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   static Host* GetInstance(); | 
					
						
							| 
									
										
										
										
											2015-11-27 00:33:07 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   void* GetRenderHandle(); | 
					
						
							|  |  |  |   bool GetRenderFocus(); | 
					
						
							|  |  |  |   bool GetRenderFullscreen(); | 
					
						
							| 
									
										
										
										
											2015-11-27 00:33:07 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | public slots: | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   void SetRenderHandle(void* handle); | 
					
						
							|  |  |  |   void SetRenderFocus(bool focus); | 
					
						
							|  |  |  |   void SetRenderFullscreen(bool fullscreen); | 
					
						
							| 
									
										
										
										
											2015-11-27 00:33:07 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | signals: | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   void RequestTitle(const QString& title); | 
					
						
							|  |  |  |   void RequestStop(); | 
					
						
							|  |  |  |   void RequestRenderSize(int w, int h); | 
					
						
							| 
									
										
										
										
											2015-11-27 00:33:07 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   Host() {} | 
					
						
							|  |  |  |   static Host* m_instance; | 
					
						
							|  |  |  |   QMutex m_lock; | 
					
						
							| 
									
										
										
										
											2015-11-27 00:33:07 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-24 10:43:46 +02:00
										 |  |  |   void* m_render_handle; | 
					
						
							|  |  |  |   bool m_render_focus; | 
					
						
							|  |  |  |   bool m_render_fullscreen; | 
					
						
							| 
									
										
										
										
											2015-11-27 00:33:07 -08:00
										 |  |  | }; |