mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Textures loading screen (#6478)
* Add a loading screen for the preloading textures *The PreloadTextures() function is called from the EmuThread to prevent citra to freezing *Add a the preloading textures loadingscreen in loading_screen.cpp *Add custom_tex_manager.reset() in core.cpp to release ram memory after exiting a game * Add custom textures loading in EmuThread * Remove useless variable * Revert "Add custom textures loading in EmuThread" This reverts commit 45ed46fa09159f782c5d20a4330b4eb7cfcdc253. * Moved include from bootmanager.h to bootmanager.cpp
This commit is contained in:
		
							parent
							
								
									62792b6b0e
								
							
						
					
					
						commit
						322d7a8287
					
				
					 6 changed files with 29 additions and 7 deletions
				
			
		|  | @ -23,6 +23,7 @@ | |||
| #include "input_common/keyboard.h" | ||||
| #include "input_common/main.h" | ||||
| #include "input_common/motion_emu.h" | ||||
| #include "video_core/custom_textures/custom_tex_manager.h" | ||||
| #include "video_core/renderer_base.h" | ||||
| #include "video_core/video_core.h" | ||||
| 
 | ||||
|  | @ -60,10 +61,17 @@ static GMainWindow* GetMainWindow() { | |||
| void EmuThread::run() { | ||||
|     MicroProfileOnThreadCreate("EmuThread"); | ||||
|     const auto scope = core_context.Acquire(); | ||||
|     Core::System& system = Core::System::GetInstance(); | ||||
| 
 | ||||
|     if (Settings::values.preload_textures) { | ||||
|         emit LoadProgress(VideoCore::LoadCallbackStage::Preload, 0, 0); | ||||
|         system.CustomTexManager().PreloadTextures( | ||||
|             stop_run, [this](VideoCore::LoadCallbackStage stage, std::size_t value, | ||||
|                              std::size_t total) { emit LoadProgress(stage, value, total); }); | ||||
|     } | ||||
| 
 | ||||
|     emit LoadProgress(VideoCore::LoadCallbackStage::Prepare, 0, 0); | ||||
| 
 | ||||
|     Core::System& system = Core::System::GetInstance(); | ||||
|     system.Renderer().Rasterizer()->LoadDiskResources( | ||||
|         stop_run, [this](VideoCore::LoadCallbackStage stage, std::size_t value, std::size_t total) { | ||||
|             emit LoadProgress(stage, value, total); | ||||
|  |  | |||
|  | @ -62,6 +62,8 @@ QProgressBar::chunk { | |||
| // Definitions for the differences in text and styling for each stage
 | ||||
| const static std::unordered_map<VideoCore::LoadCallbackStage, const char*> stage_translations{ | ||||
|     {VideoCore::LoadCallbackStage::Prepare, QT_TRANSLATE_NOOP("LoadingScreen", "Loading...")}, | ||||
|     {VideoCore::LoadCallbackStage::Preload, | ||||
|      QT_TRANSLATE_NOOP("LoadingScreen", "Preloading Textures %1 / %2")}, | ||||
|     {VideoCore::LoadCallbackStage::Decompile, | ||||
|      QT_TRANSLATE_NOOP("LoadingScreen", "Preparing Shaders %1 / %2")}, | ||||
|     {VideoCore::LoadCallbackStage::Build, | ||||
|  | @ -70,6 +72,7 @@ const static std::unordered_map<VideoCore::LoadCallbackStage, const char*> stage | |||
| }; | ||||
| const static std::unordered_map<VideoCore::LoadCallbackStage, const char*> progressbar_style{ | ||||
|     {VideoCore::LoadCallbackStage::Prepare, PROGRESSBAR_STYLE_PREPARE}, | ||||
|     {VideoCore::LoadCallbackStage::Preload, PROGRESSBAR_STYLE_BUILD}, | ||||
|     {VideoCore::LoadCallbackStage::Decompile, PROGRESSBAR_STYLE_DECOMPILE}, | ||||
|     {VideoCore::LoadCallbackStage::Build, PROGRESSBAR_STYLE_BUILD}, | ||||
|     {VideoCore::LoadCallbackStage::Complete, PROGRESSBAR_STYLE_COMPLETE}, | ||||
|  | @ -186,7 +189,8 @@ void LoadingScreen::OnLoadProgress(VideoCore::LoadCallbackStage stage, std::size | |||
|     // update labels and progress bar
 | ||||
|     const auto& stg = tr(stage_translations.at(stage)); | ||||
|     if (stage == VideoCore::LoadCallbackStage::Decompile || | ||||
|         stage == VideoCore::LoadCallbackStage::Build) { | ||||
|         stage == VideoCore::LoadCallbackStage::Build || | ||||
|         stage == VideoCore::LoadCallbackStage::Preload) { | ||||
|         ui->stage->setText(stg.arg(value).arg(total)); | ||||
|     } else { | ||||
|         ui->stage->setText(stg); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue