summaryrefslogtreecommitdiff
path: root/src/yuzu/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuzu/main.cpp')
-rw-r--r--src/yuzu/main.cpp49
1 files changed, 35 insertions, 14 deletions
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index f564de994..ab403b3ac 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -14,6 +14,7 @@
#include "configuration/configure_per_general.h"
#include "core/file_sys/vfs.h"
#include "core/file_sys/vfs_real.h"
+#include "core/frontend/scope_acquire_window_context.h"
#include "core/hle/service/acc/profile_manager.h"
#include "core/hle/service/am/applets/applets.h"
#include "core/hle/service/hid/controllers/npad.h"
@@ -92,6 +93,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 +413,17 @@ 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);
+ connect(loading_screen, &LoadingScreen::Hidden, [&] {
+ loading_screen->Clear();
+ if (emulation_running) {
+ render_window->show();
+ render_window->setFocus();
+ }
+ });
+
// Create status bar
message_label = new QLabel();
// Configured separately for left alignment
@@ -735,13 +748,15 @@ bool GMainWindow::LoadROM(const QString& filename) {
ShutdownGame();
render_window->InitRenderTarget();
- render_window->MakeCurrent();
- if (!gladLoadGL()) {
- QMessageBox::critical(this, tr("Error while initializing OpenGL 4.3 Core!"),
- tr("Your GPU may not support OpenGL 4.3, or you do not "
- "have the latest graphics driver."));
- return false;
+ {
+ Core::Frontend::ScopeAcquireWindowContext acquire_context{*render_window};
+ if (!gladLoadGL()) {
+ QMessageBox::critical(this, tr("Error while initializing OpenGL 4.3 Core!"),
+ tr("Your GPU may not support OpenGL 4.3, or you do not "
+ "have the latest graphics driver."));
+ return false;
+ }
}
QStringList unsupported_gl_extensions = GetUnsupportedGLExtensions();
@@ -782,8 +797,6 @@ bool GMainWindow::LoadROM(const QString& filename) {
"wiki</a>. This message will not be shown again."));
}
- render_window->DoneCurrent();
-
if (result != Core::System::ResultStatus::Success) {
switch (result) {
case Core::System::ResultStatus::ErrorGetLoader:
@@ -897,8 +910,8 @@ 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();
emulation_running = true;
if (ui.action_Fullscreen->isChecked()) {
@@ -932,6 +945,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 +1520,10 @@ void GMainWindow::OnStopGame() {
ShutdownGame();
}
+void GMainWindow::OnLoadComplete() {
+ loading_screen->OnLoadComplete();
+}
+
void GMainWindow::OnMenuReportCompatibility() {
if (!Settings::values.yuzu_token.empty() && !Settings::values.yuzu_username.empty()) {
CompatDB compatdb{this};
@@ -1771,9 +1790,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 +1836,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."));
}
@@ -2025,6 +2043,9 @@ int main(int argc, char* argv[]) {
GMainWindow main_window;
// After settings have been loaded by GMainWindow, apply the filter
main_window.show();
+
+ Settings::LogSettings();
+
int result = app.exec();
detached_tasks.WaitForAllTasks();
return result;