mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Destroy GLWindow on exit to prevent issues closing the app while in fullscreen
This commit is contained in:
		
							parent
							
								
									36c5058d66
								
							
						
					
					
						commit
						408e225048
					
				
					 3 changed files with 15 additions and 5 deletions
				
			
		|  | @ -359,11 +359,7 @@ void GRenderWindow::resizeEvent(QResizeEvent* event) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GRenderWindow::InitRenderTarget() { | void GRenderWindow::InitRenderTarget() { | ||||||
|     // Destroy the previous run's child_widget which should also destroy the child_window
 |     ReleaseRenderTarget(); | ||||||
|     if (child_widget) { |  | ||||||
|         layout()->removeWidget(child_widget); |  | ||||||
|         delete child_widget; |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     GMainWindow* parent = GetMainWindow(); |     GMainWindow* parent = GetMainWindow(); | ||||||
|     QWindow* parent_win_handle = parent ? parent->windowHandle() : nullptr; |     QWindow* parent_win_handle = parent ? parent->windowHandle() : nullptr; | ||||||
|  | @ -379,6 +375,14 @@ void GRenderWindow::InitRenderTarget() { | ||||||
|     BackupGeometry(); |     BackupGeometry(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void GRenderWindow::ReleaseRenderTarget() { | ||||||
|  |     if (child_widget) { | ||||||
|  |         layout()->removeWidget(child_widget); | ||||||
|  |         delete child_widget; | ||||||
|  |         child_widget = nullptr; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void GRenderWindow::CaptureScreenshot(u32 res_scale, const QString& screenshot_path) { | void GRenderWindow::CaptureScreenshot(u32 res_scale, const QString& screenshot_path) { | ||||||
|     if (res_scale == 0) |     if (res_scale == 0) | ||||||
|         res_scale = VideoCore::GetResolutionScaleFactor(); |         res_scale = VideoCore::GetResolutionScaleFactor(); | ||||||
|  |  | ||||||
|  | @ -173,6 +173,9 @@ public: | ||||||
| 
 | 
 | ||||||
|     void InitRenderTarget(); |     void InitRenderTarget(); | ||||||
| 
 | 
 | ||||||
|  |     /// Destroy the previous run's child_widget which should also destroy the child_window
 | ||||||
|  |     void ReleaseRenderTarget(); | ||||||
|  | 
 | ||||||
|     void CaptureScreenshot(u32 res_scale, const QString& screenshot_path); |     void CaptureScreenshot(u32 res_scale, const QString& screenshot_path); | ||||||
| 
 | 
 | ||||||
| public slots: | public slots: | ||||||
|  |  | ||||||
|  | @ -1019,6 +1019,9 @@ void GMainWindow::ShutdownGame() { | ||||||
|     UpdateWindowTitle(); |     UpdateWindowTitle(); | ||||||
| 
 | 
 | ||||||
|     game_path.clear(); |     game_path.clear(); | ||||||
|  | 
 | ||||||
|  |     // When closing the game, destroy the GLWindow to clear the context after the game is closed
 | ||||||
|  |     render_window->ReleaseRenderTarget(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GMainWindow::StoreRecentFile(const QString& filename) { | void GMainWindow::StoreRecentFile(const QString& filename) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue