From 2bdcb0472e99b9283146bd9bf6b1164192784d9c Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Sat, 27 Sep 2025 12:19:24 -0300 Subject: [PATCH] [WIP DO NOT MERGE] qt: move backend setting to its own config * this is totally a mess but builds, I just need to format and check everything im late to go work! * prevents error on migration Signed-off-by: Caio Oliveira --- src/common/settings.h | 2 -- src/qt_common/CMakeLists.txt | 2 ++ src/qt_common/backendsettings.cpp | 45 ++++++++++++++++++++++++++++ src/qt_common/backendsettings.h | 21 +++++++++++++ src/qt_common/shared_translation.cpp | 5 ++-- src/yuzu/main.cpp | 20 ++++++++----- 6 files changed, 83 insertions(+), 12 deletions(-) create mode 100644 src/qt_common/backendsettings.cpp create mode 100644 src/qt_common/backendsettings.h diff --git a/src/common/settings.h b/src/common/settings.h index 4d51eb1a44..8605445837 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -643,8 +643,6 @@ struct Values { // Linux SwitchableSetting enable_gamemode{linkage, true, "enable_gamemode", Category::Linux}; - SwitchableSetting force_x11{linkage, false, "force_x11", Category::Linux}; - Setting hide_backend_warning_popup{linkage, false, "hide_backend_warning_popup", Category::Linux}; // Controls InputSetting> players; diff --git a/src/qt_common/CMakeLists.txt b/src/qt_common/CMakeLists.txt index 9d292da401..f75017ad25 100644 --- a/src/qt_common/CMakeLists.txt +++ b/src/qt_common/CMakeLists.txt @@ -28,6 +28,8 @@ add_library(qt_common STATIC qt_applet_util.h qt_applet_util.cpp qt_progress_dialog.h qt_progress_dialog.cpp + backendsettings.cpp + backendsettings.h ) create_target_directory_groups(qt_common) diff --git a/src/qt_common/backendsettings.cpp b/src/qt_common/backendsettings.cpp new file mode 100644 index 0000000000..e670fc84fa --- /dev/null +++ b/src/qt_common/backendsettings.cpp @@ -0,0 +1,45 @@ +#include "backendsettings.h" +#include "common/fs/fs.h" +#include "common/fs/path_util.h" +#include + +namespace FS = Common::FS; + +namespace BackEndSettings { + +Settings::Linkage backend_linkage; + +Values::Values() + : backend_force_x11(backend_linkage, false, "backend_force_x11", Settings::Category::Linux), + backend_hide_warning_popup(backend_linkage, false, "backend_hide_warning_popup", Settings::Category::Linux) +{ + Restore(); +} + +Values values{}; + +static const auto backend_config_path = + FS::PathToUTF8String(FS::GetEdenPath(FS::EdenPath::ConfigDir) / "backend_config.ini"); + +void Save() { + (void)FS::CreateParentDir(backend_config_path); + QSettings config(QString::fromStdString(backend_config_path), QSettings::IniFormat); + + config.setValue("backend_force_x11", values.backend_force_x11.GetValue()); + config.setValue("backend_hide_warning_popup", values.backend_hide_warning_popup.GetValue()); + + config.sync(); +} + +void Restore() { + if (!FS::Exists(backend_config_path)) + return; + + QSettings config(QString::fromStdString(backend_config_path), QSettings::IniFormat); + + values.backend_force_x11.SetValue(config.value("backend_force_x11", false).toBool()); + values.backend_hide_warning_popup.SetValue(config.value("backend_hide_warning_popup", false).toBool()); +} + +} // namespace BackEndSettings + diff --git a/src/qt_common/backendsettings.h b/src/qt_common/backendsettings.h new file mode 100644 index 0000000000..39f1166148 --- /dev/null +++ b/src/qt_common/backendsettings.h @@ -0,0 +1,21 @@ +#pragma once +#include "common/settings.h" + +namespace BackEndSettings { + +using namespace Settings; + +struct Values { + SwitchableSetting backend_force_x11; + Setting backend_hide_warning_popup; + + Values(); +}; + +extern Values values; + +void Save(); +void Restore(); + +} // namespace BackEndSettings + diff --git a/src/qt_common/shared_translation.cpp b/src/qt_common/shared_translation.cpp index 403498a22c..e1c1c38e47 100644 --- a/src/qt_common/shared_translation.cpp +++ b/src/qt_common/shared_translation.cpp @@ -15,6 +15,7 @@ #include "common/settings_setting.h" #include "common/time_zone.h" #include "qt_common/uisettings.h" +#include "qt_common/backendsettings.h" #include #include #include @@ -451,8 +452,8 @@ std::unique_ptr InitializeTranslations(QObject* parent) // Linux INSERT(Settings, enable_gamemode, tr("Enable Gamemode"), QString()); - INSERT(Settings, force_x11, tr("Force X11 as Graphics Backend"), QString()); - INSERT(Settings, hide_backend_warning_popup, QString(), QString()); +INSERT(BackEndSettings, backend_force_x11, tr("Force X11 as Graphics Backend"), QString()); +INSERT(BackEndSettings, backend_hide_warning_popup, QString(), QString()); // Ui Debugging diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 64f5f968a8..d788916571 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -24,6 +24,7 @@ #endif #ifdef __linux__ #include "common/linux/gamemode.h" +#include "qt_common/backendsettings.h" #endif #include @@ -4466,7 +4467,7 @@ void GMainWindow::OnCheckBackend() { if (!isWayland) return; - const bool currently_hidden = Settings::values.hide_backend_warning_popup.GetValue(); + const bool currently_hidden = BackEndSettings::values.backend_hide_warning_popup.GetValue(); if (currently_hidden) return; @@ -4489,16 +4490,20 @@ void GMainWindow::OnCheckBackend() { const bool hide = cb->isChecked(); if (hide != currently_hidden) { - Settings::values.hide_backend_warning_popup.SetValue(hide); + BackEndSettings::values.backend_hide_warning_popup.SetValue(hide); + BackEndSettings::Save(); } if (msgbox.clickedButton() == okButton) { - Settings::values.force_x11.SetValue(true); + BackEndSettings::values.backend_force_x11.SetValue(true); + BackEndSettings::Save(); + QMessageBox::information(this, - tr("Restart Required"), - tr("Restart Eden to apply the X11 backend.")); + tr("Restart Required"), + tr("Restart Eden to apply the X11 backend.")); } } + #endif bool GMainWindow::CheckFirmwarePresence() { @@ -4992,9 +4997,8 @@ int main(int argc, char* argv[]) { } // TODO: (DraVee) Un-alive the guy who wrote this - const auto config_path = Common::FS::PathToUTF8String(Common::FS::GetEdenPath(Common::FS::EdenPath::ConfigDir) / "qt-config.ini"); - const bool forceX11 = QSettings(QString::fromStdString(config_path), QSettings::IniFormat).value("Linux/force_x11", false).toBool(); - if (forceX11) + BackEndSettings::Restore(); + if (BackEndSettings::values.backend_force_x11.GetValue()) qputenv("QT_QPA_PLATFORM", "xcb"); // Fix the Wayland appId. This needs to match the name of the .desktop file without the .desktop