Forráskód Böngészése

yuzu qt: Use lambda and std::function for reset callback

Also makes use of std::move, and performs a clang-format cleanup.

This addresses review comments.

Co-authored-by: LC <mathew1800@gmail.com>
lat9nq 5 éve
szülő
commit
c17e1bd7a8

+ 1 - 5
src/yuzu/configuration/configure_dialog.cpp

@@ -16,10 +16,6 @@
 #include "yuzu/configuration/configure_input_player.h"
 #include "yuzu/hotkeys.h"
 
-static void CloseDialog(ConfigureDialog *dialog) {
-    dialog->close();
-}
-
 ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry,
                                  InputCommon::InputSubsystem* input_subsystem)
     : QDialog(parent), ui(new Ui::ConfigureDialog), registry(registry) {
@@ -31,7 +27,7 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry,
 
     ui->inputTab->Initialize(input_subsystem);
 
-    ui->generalTab->SetResetCallback(&CloseDialog, this);
+    ui->generalTab->SetResetCallback([&] { this->close(); });
 
     SetConfiguration();
     PopulateSelectionList();

+ 7 - 6
src/yuzu/configuration/configure_general.cpp

@@ -2,6 +2,8 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
+#include <functional>
+#include <utility>
 #include <QCheckBox>
 #include <QMessageBox>
 #include <QSpinBox>
@@ -57,10 +59,8 @@ void ConfigureGeneral::SetConfiguration() {
 }
 
 // Called to set the callback when resetting settings to defaults
-void ConfigureGeneral::SetResetCallback(void (*callback)(ConfigureDialog*),
-                                        ConfigureDialog* param) {
-    ResetCallback = callback;
-    reset_callback_param = param;
+void ConfigureGeneral::SetResetCallback(std::function<void()> callback) {
+    reset_callback = std::move(callback);
 }
 
 void ConfigureGeneral::ResetDefaults() {
@@ -69,11 +69,12 @@ void ConfigureGeneral::ResetDefaults() {
         tr("This reset all settings and remove all per-game configurations. This will not delete "
            "game directories, profiles, or input profiles. Proceed?"),
         QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
-    if (answer == QMessageBox::No)
+    if (answer == QMessageBox::No) {
         return;
+    }
     UISettings::values.reset_to_defaults = true;
     UISettings::values.is_game_list_reload_pending.exchange(true);
-    (*ResetCallback)(reset_callback_param);
+    reset_callback();
 }
 
 void ConfigureGeneral::ApplyConfiguration() {

+ 3 - 3
src/yuzu/configuration/configure_general.h

@@ -4,6 +4,7 @@
 
 #pragma once
 
+#include <functional>
 #include <memory>
 #include <QWidget>
 
@@ -26,7 +27,7 @@ public:
     explicit ConfigureGeneral(QWidget* parent = nullptr);
     ~ConfigureGeneral() override;
 
-    void SetResetCallback(void (*callback)(ConfigureDialog*), ConfigureDialog *param);
+    void SetResetCallback(std::function<void()> callback);
     void ResetDefaults();
     void ApplyConfiguration();
 
@@ -38,8 +39,7 @@ private:
 
     void SetupPerGameUI();
 
-    void (*ResetCallback)(ConfigureDialog*);
-    ConfigureDialog *reset_callback_param;
+    std::function<void()> reset_callback;
 
     std::unique_ptr<Ui::ConfigureGeneral> ui;
 

+ 6 - 5
src/yuzu/main.cpp

@@ -2611,17 +2611,18 @@ void GMainWindow::OnConfigure() {
             LOG_WARNING(Frontend, "Failed to remove game metadata cache files");
         }
 
-        // Explicitly save the game directories, since reinitializing config does not do so.
-        QVector<UISettings::GameDir> old_game_dirs = UISettings::values.game_dirs;
-        QVector<u64> old_favorited_ids = UISettings::values.favorited_ids;
+        // Explicitly save the game directories, since reinitializing config does not explicitly do
+        // so.
+        QVector<UISettings::GameDir> old_game_dirs = std::move(UISettings::values.game_dirs);
+        QVector<u64> old_favorited_ids = std::move(UISettings::values.favorited_ids);
 
         Settings::values.disabled_addons.clear();
 
         config = std::make_unique<Config>();
         UISettings::values.reset_to_defaults = false;
 
-        UISettings::values.game_dirs = old_game_dirs;
-        UISettings::values.favorited_ids = old_favorited_ids;
+        UISettings::values.game_dirs = std::move(old_game_dirs);
+        UISettings::values.favorited_ids = std::move(old_favorited_ids);
 
         InitializeRecentFileMenuActions();