aboutsummaryrefslogtreecommitdiff
path: root/src/yuzu
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuzu')
-rw-r--r--src/yuzu/CMakeLists.txt5
-rw-r--r--src/yuzu/applets/qt_software_keyboard.cpp9
-rw-r--r--src/yuzu/applets/qt_software_keyboard.h12
-rw-r--r--src/yuzu/bootmanager.cpp3
-rw-r--r--src/yuzu/configuration/configure_dialog.cpp7
-rw-r--r--src/yuzu/configuration/configure_per_game.cpp2
-rw-r--r--src/yuzu/configuration/configure_per_game.ui8
-rw-r--r--src/yuzu/configuration/configure_profile_manager.cpp11
-rw-r--r--src/yuzu/main.cpp30
-rw-r--r--src/yuzu/main.h2
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);