diff options
Diffstat (limited to 'src/yuzu')
| -rw-r--r-- | src/yuzu/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | src/yuzu/applets/qt_software_keyboard.cpp | 9 | ||||
| -rw-r--r-- | src/yuzu/applets/qt_software_keyboard.h | 12 | ||||
| -rw-r--r-- | src/yuzu/bootmanager.cpp | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_dialog.cpp | 7 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_per_game.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_per_game.ui | 8 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_profile_manager.cpp | 11 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 30 | ||||
| -rw-r--r-- | src/yuzu/main.h | 2 |
10 files changed, 60 insertions, 29 deletions
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt index 402be6a78..d62fd566f 100644 --- a/src/yuzu/CMakeLists.txt +++ b/src/yuzu/CMakeLists.txt @@ -299,6 +299,11 @@ if (YUZU_USE_BUNDLED_QT) copy_yuzu_Qt5_deps(yuzu) endif() +if (ENABLE_SDL2) + target_link_libraries(yuzu PRIVATE SDL2) + target_compile_definitions(yuzu PRIVATE HAVE_SDL2) +endif() + if (MSVC) include(CopyYuzuSDLDeps) include(CopyYuzuFFmpegDeps) diff --git a/src/yuzu/applets/qt_software_keyboard.cpp b/src/yuzu/applets/qt_software_keyboard.cpp index 8fc0c5a36..a83a11a95 100644 --- a/src/yuzu/applets/qt_software_keyboard.cpp +++ b/src/yuzu/applets/qt_software_keyboard.cpp @@ -413,7 +413,7 @@ void QtSoftwareKeyboardDialog::ShowTextCheckDialog( ? ui->text_edit_osk->toPlainText().toStdU16String() : ui->line_edit_osk->text().toStdU16String(); - emit SubmitNormalText(SwkbdResult::Ok, std::move(text)); + emit SubmitNormalText(SwkbdResult::Ok, std::move(text), true); break; } } @@ -1510,7 +1510,8 @@ QtSoftwareKeyboard::~QtSoftwareKeyboard() = default; void QtSoftwareKeyboard::InitializeKeyboard( bool is_inline, Core::Frontend::KeyboardInitializeParameters initialize_parameters, - std::function<void(Service::AM::Applets::SwkbdResult, std::u16string)> submit_normal_callback_, + std::function<void(Service::AM::Applets::SwkbdResult, std::u16string, bool)> + submit_normal_callback_, std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)> submit_inline_callback_) { if (is_inline) { @@ -1609,8 +1610,8 @@ void QtSoftwareKeyboard::ExitKeyboard() const { } void QtSoftwareKeyboard::SubmitNormalText(Service::AM::Applets::SwkbdResult result, - std::u16string submitted_text) const { - submit_normal_callback(result, submitted_text); + std::u16string submitted_text, bool confirmed) const { + submit_normal_callback(result, submitted_text, confirmed); } void QtSoftwareKeyboard::SubmitInlineText(Service::AM::Applets::SwkbdReplyType reply_type, diff --git a/src/yuzu/applets/qt_software_keyboard.h b/src/yuzu/applets/qt_software_keyboard.h index 1a03c098c..592d9c085 100644 --- a/src/yuzu/applets/qt_software_keyboard.h +++ b/src/yuzu/applets/qt_software_keyboard.h @@ -51,8 +51,8 @@ public: void ExitKeyboard(); signals: - void SubmitNormalText(Service::AM::Applets::SwkbdResult result, - std::u16string submitted_text) const; + void SubmitNormalText(Service::AM::Applets::SwkbdResult result, std::u16string submitted_text, + bool confirmed = false) const; void SubmitInlineText(Service::AM::Applets::SwkbdReplyType reply_type, std::u16string submitted_text, s32 cursor_position) const; @@ -234,7 +234,7 @@ public: void InitializeKeyboard( bool is_inline, Core::Frontend::KeyboardInitializeParameters initialize_parameters, - std::function<void(Service::AM::Applets::SwkbdResult, std::u16string)> + std::function<void(Service::AM::Applets::SwkbdResult, std::u16string, bool)> submit_normal_callback_, std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)> submit_inline_callback_) override; @@ -272,13 +272,13 @@ signals: void MainWindowExitKeyboard() const; private: - void SubmitNormalText(Service::AM::Applets::SwkbdResult result, - std::u16string submitted_text) const; + void SubmitNormalText(Service::AM::Applets::SwkbdResult result, std::u16string submitted_text, + bool confirmed) const; void SubmitInlineText(Service::AM::Applets::SwkbdReplyType reply_type, std::u16string submitted_text, s32 cursor_position) const; - mutable std::function<void(Service::AM::Applets::SwkbdResult, std::u16string)> + mutable std::function<void(Service::AM::Applets::SwkbdResult, std::u16string, bool)> submit_normal_callback; mutable std::function<void(Service::AM::Applets::SwkbdReplyType, std::u16string, s32)> submit_inline_callback; diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index 40fd47406..46ab0603d 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp @@ -32,7 +32,6 @@ #include "common/settings.h" #include "core/core.h" #include "core/frontend/framebuffer_layout.h" -#include "core/hle/kernel/k_process.h" #include "input_common/keyboard.h" #include "input_common/main.h" #include "input_common/mouse/mouse_input.h" @@ -66,7 +65,7 @@ void EmuThread::run() { if (Settings::values.use_disk_shader_cache.GetValue()) { system.Renderer().ReadRasterizer()->LoadDiskResources( - system.CurrentProcess()->GetTitleID(), stop_token, + system.GetCurrentProcessProgramID(), stop_token, [this](VideoCore::LoadCallbackStage stage, std::size_t value, std::size_t total) { emit LoadProgress(stage, value, total); }); diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index 4fa0c4a43..642a5f966 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp @@ -81,8 +81,11 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry, SetConfiguration(); PopulateSelectionList(); - connect(ui->tabWidget, &QTabWidget::currentChanged, this, - [this]() { debug_tab_tab->SetCurrentIndex(0); }); + connect(ui->tabWidget, &QTabWidget::currentChanged, this, [this](int index) { + if (index != -1) { + debug_tab_tab->SetCurrentIndex(0); + } + }); connect(ui_tab.get(), &ConfigureUi::LanguageChanged, this, &ConfigureDialog::OnLanguageChanged); connect(ui->selectorList, &QListWidget::itemSelectionChanged, this, &ConfigureDialog::UpdateVisibleTabs); diff --git a/src/yuzu/configuration/configure_per_game.cpp b/src/yuzu/configuration/configure_per_game.cpp index 1031399e1..12699c126 100644 --- a/src/yuzu/configuration/configure_per_game.cpp +++ b/src/yuzu/configuration/configure_per_game.cpp @@ -66,7 +66,7 @@ ConfigurePerGame::ConfigurePerGame(QWidget* parent, u64 title_id, const std::str ui->tabWidget->addTab(system_tab.get(), tr("System")); ui->tabWidget->addTab(cpu_tab.get(), tr("CPU")); ui->tabWidget->addTab(graphics_tab.get(), tr("Graphics")); - ui->tabWidget->addTab(graphics_advanced_tab.get(), tr("GraphicsAdvanced")); + ui->tabWidget->addTab(graphics_advanced_tab.get(), tr("Adv. Graphics")); ui->tabWidget->addTab(audio_tab.get(), tr("Audio")); setFocusPolicy(Qt::ClickFocus); diff --git a/src/yuzu/configuration/configure_per_game.ui b/src/yuzu/configuration/configure_per_game.ui index 60efdbf21..85c86e107 100644 --- a/src/yuzu/configuration/configure_per_game.ui +++ b/src/yuzu/configuration/configure_per_game.ui @@ -2,14 +2,6 @@ <ui version="4.0"> <class>ConfigurePerGame</class> <widget class="QDialog" name="ConfigurePerGame"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>900</width> - <height>630</height> - </rect> - </property> <property name="minimumSize"> <size> <width>900</width> diff --git a/src/yuzu/configuration/configure_profile_manager.cpp b/src/yuzu/configuration/configure_profile_manager.cpp index 99d5f4686..78b6374c0 100644 --- a/src/yuzu/configuration/configure_profile_manager.cpp +++ b/src/yuzu/configuration/configure_profile_manager.cpp @@ -306,6 +306,17 @@ void ConfigureProfileManager::SetUserImage() { return; } + // Some games crash when the profile image is too big. Resize any image bigger than 256x256 + QImage image(image_path); + if (image.width() > 256 || image.height() > 256) { + image = image.scaled(256, 256, Qt::KeepAspectRatio); + if (!image.save(image_path)) { + QMessageBox::warning(this, tr("Error resizing user image"), + tr("Unable to resize image")); + return; + } + } + const auto username = GetAccountUsername(*profile_manager, *uuid); item_model->setItem(index, 0, new QStandardItem{GetIcon(*uuid), FormatUserEntryText(username, *uuid)}); diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 2af582fe5..4e5552d2a 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -66,6 +66,10 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual #include <QUrl> #include <QtConcurrent/QtConcurrent> +#ifdef HAVE_SDL2 +#include <SDL.h> // For SDL ScreenSaver functions +#endif + #include <fmt/format.h> #include "common/detached_tasks.h" #include "common/fs/fs.h" @@ -287,6 +291,16 @@ GMainWindow::GMainWindow() ui->action_Fullscreen->setChecked(false); +#if defined(HAVE_SDL2) && !defined(_WIN32) + SDL_InitSubSystem(SDL_INIT_VIDEO); + // SDL disables the screen saver by default, and setting the hint + // SDL_HINT_VIDEO_ALLOW_SCREENSAVER doesn't seem to work, so we just enable the screen saver + // for now. + SDL_EnableScreenSaver(); +#endif + + Common::Log::Start(); + QStringList args = QApplication::arguments(); if (args.size() < 2) { @@ -357,8 +371,9 @@ GMainWindow::GMainWindow() GMainWindow::~GMainWindow() { // will get automatically deleted otherwise - if (render_window->parent() == nullptr) + if (render_window->parent() == nullptr) { delete render_window; + } } void GMainWindow::RegisterMetaTypes() { @@ -470,8 +485,9 @@ void GMainWindow::SoftwareKeyboardInitialize( } else { connect( software_keyboard, &QtSoftwareKeyboardDialog::SubmitNormalText, this, - [this](Service::AM::Applets::SwkbdResult result, std::u16string submitted_text) { - emit SoftwareKeyboardSubmitNormalText(result, submitted_text); + [this](Service::AM::Applets::SwkbdResult result, std::u16string submitted_text, + bool confirmed) { + emit SoftwareKeyboardSubmitNormalText(result, submitted_text, confirmed); }, Qt::QueuedConnection); } @@ -1223,12 +1239,16 @@ void GMainWindow::OnDisplayTitleBars(bool show) { void GMainWindow::PreventOSSleep() { #ifdef _WIN32 SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED); +#elif defined(HAVE_SDL2) + SDL_DisableScreenSaver(); #endif } void GMainWindow::AllowOSSleep() { #ifdef _WIN32 SetThreadExecutionState(ES_CONTINUOUS); +#elif defined(HAVE_SDL2) + SDL_EnableScreenSaver(); #endif } @@ -2745,7 +2765,7 @@ void GMainWindow::OnConfigureTas() { } void GMainWindow::OnConfigurePerGame() { - const u64 title_id = system->CurrentProcess()->GetTitleID(); + const u64 title_id = system->GetCurrentProcessProgramID(); OpenPerGameConfiguration(title_id, game_path.toStdString()); } @@ -2844,7 +2864,7 @@ void GMainWindow::OnToggleFilterBar() { } void GMainWindow::OnCaptureScreenshot() { - const u64 title_id = system->CurrentProcess()->GetTitleID(); + const u64 title_id = system->GetCurrentProcessProgramID(); const auto screenshot_path = QString::fromStdString(Common::FS::GetYuzuPathString(Common::FS::YuzuPath::ScreenshotsDir)); const auto date = diff --git a/src/yuzu/main.h b/src/yuzu/main.h index aed15a0a0..981102daa 100644 --- a/src/yuzu/main.h +++ b/src/yuzu/main.h @@ -150,7 +150,7 @@ signals: void ProfileSelectorFinishedSelection(std::optional<Common::UUID> uuid); void SoftwareKeyboardSubmitNormalText(Service::AM::Applets::SwkbdResult result, - std::u16string submitted_text); + std::u16string submitted_text, bool confirmed); void SoftwareKeyboardSubmitInlineText(Service::AM::Applets::SwkbdReplyType reply_type, std::u16string submitted_text, s32 cursor_position); |
