mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-10 14:48:17 -05:00
QT Frontend: Add a Loading screen with progressbar
With shader caches on the horizon, one requirement is to provide visible feedback for the progress. The shader cache reportedly takes several minutes to load for large caches that were invalidated, and as such we should provide a loading screen with progress. Adds a loading screen widget that will be shown until the first frame of the game is swapped. This was chosen in case shader caches are not being used, several games still take more than a few seconds to launch and could benefit from a loading screen.
This commit is contained in:
@ -92,6 +92,7 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual
|
||||
#include "yuzu/game_list.h"
|
||||
#include "yuzu/game_list_p.h"
|
||||
#include "yuzu/hotkeys.h"
|
||||
#include "yuzu/loading_screen.h"
|
||||
#include "yuzu/main.h"
|
||||
#include "yuzu/ui_settings.h"
|
||||
|
||||
@ -411,6 +412,10 @@ void GMainWindow::InitializeWidgets() {
|
||||
game_list = new GameList(vfs, this);
|
||||
ui.horizontalLayout->addWidget(game_list);
|
||||
|
||||
loading_screen = new LoadingScreen(this);
|
||||
loading_screen->hide();
|
||||
ui.horizontalLayout->addWidget(loading_screen);
|
||||
|
||||
// Create status bar
|
||||
message_label = new QLabel();
|
||||
// Configured separately for left alignment
|
||||
@ -897,8 +902,9 @@ void GMainWindow::BootGame(const QString& filename) {
|
||||
.arg(Common::g_build_fullname, Common::g_scm_branch, Common::g_scm_desc,
|
||||
QString::fromStdString(title_name)));
|
||||
|
||||
render_window->show();
|
||||
render_window->setFocus();
|
||||
loading_screen->Prepare(Core::System::GetInstance().GetAppLoader());
|
||||
loading_screen->show();
|
||||
loading_screen->setFocus();
|
||||
|
||||
emulation_running = true;
|
||||
if (ui.action_Fullscreen->isChecked()) {
|
||||
@ -932,6 +938,8 @@ void GMainWindow::ShutdownGame() {
|
||||
ui.action_Load_Amiibo->setEnabled(false);
|
||||
ui.action_Capture_Screenshot->setEnabled(false);
|
||||
render_window->hide();
|
||||
loading_screen->hide();
|
||||
loading_screen->Clear();
|
||||
game_list->show();
|
||||
game_list->setFilterFocus();
|
||||
setWindowTitle(QString("yuzu %1| %2-%3")
|
||||
@ -1505,6 +1513,13 @@ void GMainWindow::OnStopGame() {
|
||||
ShutdownGame();
|
||||
}
|
||||
|
||||
void GMainWindow::OnLoadComplete() {
|
||||
loading_screen->hide();
|
||||
loading_screen->Clear();
|
||||
render_window->show();
|
||||
render_window->setFocus();
|
||||
}
|
||||
|
||||
void GMainWindow::OnMenuReportCompatibility() {
|
||||
if (!Settings::values.yuzu_token.empty() && !Settings::values.yuzu_username.empty()) {
|
||||
CompatDB compatdb{this};
|
||||
@ -1771,9 +1786,8 @@ void GMainWindow::OnReinitializeKeys(ReinitializeKeyBehavior behavior) {
|
||||
this, tr("Confirm Key Rederivation"),
|
||||
tr("You are about to force rederive all of your keys. \nIf you do not know what this "
|
||||
"means or what you are doing, \nthis is a potentially destructive action. \nPlease "
|
||||
"make "
|
||||
"sure this is what you want \nand optionally make backups.\n\nThis will delete your "
|
||||
"autogenerated key files and re-run the key derivation module."),
|
||||
"make sure this is what you want \nand optionally make backups.\n\nThis will delete "
|
||||
"your autogenerated key files and re-run the key derivation module."),
|
||||
QMessageBox::StandardButtons{QMessageBox::Ok, QMessageBox::Cancel});
|
||||
|
||||
if (res == QMessageBox::Cancel)
|
||||
@ -1818,7 +1832,7 @@ void GMainWindow::OnReinitializeKeys(ReinitializeKeyBehavior behavior) {
|
||||
errors +
|
||||
tr("<br><br>You can get all of these and dump all of your games easily by "
|
||||
"following <a href='https://yuzu-emu.org/help/quickstart/'>the "
|
||||
"quickstart guide</a>. Alternatively, you can use another method of dumping "
|
||||
"quickstart guide</a>. Alternatively, you can use another method of dumping"
|
||||
"to obtain all of your keys."));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user