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:
@@ -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);
|
||||
|
Reference in New Issue
Block a user