summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar lat9nq2023-07-21 23:09:09 -0400
committerGravatar lat9nq2023-07-21 23:09:09 -0400
commit17b9c1e1715a16bebcdd92c02ce7f7e503212462 (patch)
treec469af455cf7905dc7e5ab3cac0fb7f30ca3455c /src
parentsettings_common: Use a vector in category linkage (diff)
downloadyuzu-17b9c1e1715a16bebcdd92c02ce7f7e503212462.tar.gz
yuzu-17b9c1e1715a16bebcdd92c02ce7f7e503212462.tar.xz
yuzu-17b9c1e1715a16bebcdd92c02ce7f7e503212462.zip
common,qt-config: Remove usage of forward_list
Diffstat (limited to 'src')
-rw-r--r--src/common/settings.cpp1
-rw-r--r--src/common/settings_common.h1
-rw-r--r--src/yuzu/configuration/configuration_shared.cpp5
-rw-r--r--src/yuzu/configuration/configuration_shared.h4
-rw-r--r--src/yuzu/configuration/configure_audio.cpp8
-rw-r--r--src/yuzu/configuration/configure_audio.h6
-rw-r--r--src/yuzu/configuration/configure_cpu.cpp8
-rw-r--r--src/yuzu/configuration/configure_cpu.h5
-rw-r--r--src/yuzu/configuration/configure_dialog.h3
-rw-r--r--src/yuzu/configuration/configure_general.cpp8
-rw-r--r--src/yuzu/configuration/configure_general.h5
-rw-r--r--src/yuzu/configuration/configure_graphics.cpp20
-rw-r--r--src/yuzu/configuration/configure_graphics.h4
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.cpp4
-rw-r--r--src/yuzu/configuration/configure_graphics_advanced.h6
-rw-r--r--src/yuzu/configuration/configure_per_game.cpp2
-rw-r--r--src/yuzu/configuration/configure_per_game.h3
-rw-r--r--src/yuzu/configuration/configure_system.cpp12
-rw-r--r--src/yuzu/configuration/configure_system.h6
-rw-r--r--src/yuzu/configuration/shared_widget.cpp8
-rw-r--r--src/yuzu/configuration/shared_widget.h10
21 files changed, 64 insertions, 65 deletions
diff --git a/src/common/settings.cpp b/src/common/settings.cpp
index 0e2ccf857..4a4ba307c 100644
--- a/src/common/settings.cpp
+++ b/src/common/settings.cpp
@@ -10,7 +10,6 @@
10#include <compare> 10#include <compare>
11#include <cstddef> 11#include <cstddef>
12#include <filesystem> 12#include <filesystem>
13#include <forward_list>
14#include <functional> 13#include <functional>
15#include <string_view> 14#include <string_view>
16#include <type_traits> 15#include <type_traits>
diff --git a/src/common/settings_common.h b/src/common/settings_common.h
index bfd1bad64..6f90ae90d 100644
--- a/src/common/settings_common.h
+++ b/src/common/settings_common.h
@@ -3,7 +3,6 @@
3 3
4#pragma once 4#pragma once
5 5
6#include <forward_list>
7#include <functional> 6#include <functional>
8#include <map> 7#include <map>
9#include <string> 8#include <string>
diff --git a/src/yuzu/configuration/configuration_shared.cpp b/src/yuzu/configuration/configuration_shared.cpp
index 8c12d063e..0ed6146a0 100644
--- a/src/yuzu/configuration/configuration_shared.cpp
+++ b/src/yuzu/configuration/configuration_shared.cpp
@@ -3,13 +3,14 @@
3 3
4#include <memory> 4#include <memory>
5#include <type_traits> 5#include <type_traits>
6#include <vector>
6#include "yuzu/configuration/configuration_shared.h" 7#include "yuzu/configuration/configuration_shared.h"
7 8
8namespace ConfigurationShared { 9namespace ConfigurationShared {
9 10
10Tab::Tab(std::shared_ptr<std::forward_list<Tab*>> group, QWidget* parent) : QWidget(parent) { 11Tab::Tab(std::shared_ptr<std::vector<Tab*>> group, QWidget* parent) : QWidget(parent) {
11 if (group != nullptr) { 12 if (group != nullptr) {
12 group->push_front(this); 13 group->push_back(this);
13 } 14 }
14} 15}
15 16
diff --git a/src/yuzu/configuration/configuration_shared.h b/src/yuzu/configuration/configuration_shared.h
index 2a084b584..31897a6b0 100644
--- a/src/yuzu/configuration/configuration_shared.h
+++ b/src/yuzu/configuration/configuration_shared.h
@@ -3,8 +3,8 @@
3 3
4#pragma once 4#pragma once
5 5
6#include <forward_list>
7#include <memory> 6#include <memory>
7#include <vector>
8#include <QString> 8#include <QString>
9#include <QWidget> 9#include <QWidget>
10#include <qobjectdefs.h> 10#include <qobjectdefs.h>
@@ -17,7 +17,7 @@ class Tab : public QWidget {
17 Q_OBJECT 17 Q_OBJECT
18 18
19public: 19public:
20 explicit Tab(std::shared_ptr<std::forward_list<Tab*>> group, QWidget* parent = nullptr); 20 explicit Tab(std::shared_ptr<std::vector<Tab*>> group, QWidget* parent = nullptr);
21 ~Tab(); 21 ~Tab();
22 22
23 virtual void ApplyConfiguration() = 0; 23 virtual void ApplyConfiguration() = 0;
diff --git a/src/yuzu/configuration/configure_audio.cpp b/src/yuzu/configuration/configure_audio.cpp
index 11714b86d..7eb752898 100644
--- a/src/yuzu/configuration/configure_audio.cpp
+++ b/src/yuzu/configuration/configure_audio.cpp
@@ -1,8 +1,8 @@
1// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project 1// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
2// SPDX-License-Identifier: GPL-2.0-or-later 2// SPDX-License-Identifier: GPL-2.0-or-later
3 3
4#include <forward_list>
5#include <memory> 4#include <memory>
5#include <vector>
6#include <QComboBox> 6#include <QComboBox>
7 7
8#include "audio_core/sink/sink.h" 8#include "audio_core/sink/sink.h"
@@ -17,7 +17,7 @@
17#include "yuzu/uisettings.h" 17#include "yuzu/uisettings.h"
18 18
19ConfigureAudio::ConfigureAudio(const Core::System& system_, 19ConfigureAudio::ConfigureAudio(const Core::System& system_,
20 std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_, 20 std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_,
21 const ConfigurationShared::Builder& builder, QWidget* parent) 21 const ConfigurationShared::Builder& builder, QWidget* parent)
22 : Tab(group_, parent), ui(std::make_unique<Ui::ConfigureAudio>()), system{system_} { 22 : Tab(group_, parent), ui(std::make_unique<Ui::ConfigureAudio>()), system{system_} {
23 ui->setupUi(this); 23 ui->setupUi(this);
@@ -31,11 +31,11 @@ ConfigureAudio::~ConfigureAudio() = default;
31void ConfigureAudio::Setup(const ConfigurationShared::Builder& builder) { 31void ConfigureAudio::Setup(const ConfigurationShared::Builder& builder) {
32 auto& layout = *ui->audio_widget->layout(); 32 auto& layout = *ui->audio_widget->layout();
33 33
34 std::forward_list<Settings::BasicSetting*> settings; 34 std::vector<Settings::BasicSetting*> settings;
35 35
36 auto push = [&](Settings::Category category) { 36 auto push = [&](Settings::Category category) {
37 for (auto* setting : Settings::values.linkage.by_category[category]) { 37 for (auto* setting : Settings::values.linkage.by_category[category]) {
38 settings.push_front(setting); 38 settings.push_back(setting);
39 } 39 }
40 }; 40 };
41 41
diff --git a/src/yuzu/configuration/configure_audio.h b/src/yuzu/configuration/configure_audio.h
index 94606f210..79538e81c 100644
--- a/src/yuzu/configuration/configure_audio.h
+++ b/src/yuzu/configuration/configure_audio.h
@@ -3,9 +3,9 @@
3 3
4#pragma once 4#pragma once
5 5
6#include <forward_list>
7#include <functional> 6#include <functional>
8#include <memory> 7#include <memory>
8#include <vector>
9#include <QWidget> 9#include <QWidget>
10#include "yuzu/configuration/configuration_shared.h" 10#include "yuzu/configuration/configuration_shared.h"
11 11
@@ -26,7 +26,7 @@ class Builder;
26class ConfigureAudio : public ConfigurationShared::Tab { 26class ConfigureAudio : public ConfigurationShared::Tab {
27public: 27public:
28 explicit ConfigureAudio(const Core::System& system_, 28 explicit ConfigureAudio(const Core::System& system_,
29 std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group, 29 std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group,
30 const ConfigurationShared::Builder& builder, QWidget* parent = nullptr); 30 const ConfigurationShared::Builder& builder, QWidget* parent = nullptr);
31 ~ConfigureAudio() override; 31 ~ConfigureAudio() override;
32 32
@@ -51,7 +51,7 @@ private:
51 51
52 const Core::System& system; 52 const Core::System& system;
53 53
54 std::forward_list<std::function<void(bool)>> apply_funcs{}; 54 std::vector<std::function<void(bool)>> apply_funcs{};
55 55
56 QComboBox* sink_combo_box; 56 QComboBox* sink_combo_box;
57 QComboBox* output_device_combo_box; 57 QComboBox* output_device_combo_box;
diff --git a/src/yuzu/configuration/configure_cpu.cpp b/src/yuzu/configuration/configure_cpu.cpp
index 7d122906e..8ed9a65f3 100644
--- a/src/yuzu/configuration/configure_cpu.cpp
+++ b/src/yuzu/configuration/configure_cpu.cpp
@@ -1,9 +1,9 @@
1// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project 1// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
2// SPDX-License-Identifier: GPL-2.0-or-later 2// SPDX-License-Identifier: GPL-2.0-or-later
3 3
4#include <forward_list>
5#include <memory> 4#include <memory>
6#include <typeinfo> 5#include <typeinfo>
6#include <vector>
7#include <QComboBox> 7#include <QComboBox>
8#include "common/common_types.h" 8#include "common/common_types.h"
9#include "common/settings.h" 9#include "common/settings.h"
@@ -15,7 +15,7 @@
15#include "yuzu/configuration/configure_cpu.h" 15#include "yuzu/configuration/configure_cpu.h"
16 16
17ConfigureCpu::ConfigureCpu(const Core::System& system_, 17ConfigureCpu::ConfigureCpu(const Core::System& system_,
18 std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_, 18 std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_,
19 const ConfigurationShared::Builder& builder, QWidget* parent) 19 const ConfigurationShared::Builder& builder, QWidget* parent)
20 : Tab(group_, parent), ui{std::make_unique<Ui::ConfigureCpu>()}, system{system_}, 20 : Tab(group_, parent), ui{std::make_unique<Ui::ConfigureCpu>()}, system{system_},
21 combobox_translations(builder.ComboboxTranslations()) { 21 combobox_translations(builder.ComboboxTranslations()) {
@@ -37,10 +37,10 @@ void ConfigureCpu::Setup(const ConfigurationShared::Builder& builder) {
37 auto* unsafe_layout = ui->unsafe_widget->layout(); 37 auto* unsafe_layout = ui->unsafe_widget->layout();
38 std::map<std::string, QWidget*> unsafe_hold{}; 38 std::map<std::string, QWidget*> unsafe_hold{};
39 39
40 std::forward_list<Settings::BasicSetting*> settings; 40 std::vector<Settings::BasicSetting*> settings;
41 const auto push = [&](Settings::Category category) { 41 const auto push = [&](Settings::Category category) {
42 for (const auto setting : Settings::values.linkage.by_category[category]) { 42 for (const auto setting : Settings::values.linkage.by_category[category]) {
43 settings.push_front(setting); 43 settings.push_back(setting);
44 } 44 }
45 }; 45 };
46 46
diff --git a/src/yuzu/configuration/configure_cpu.h b/src/yuzu/configuration/configure_cpu.h
index ab19c0ba1..61a6de7aa 100644
--- a/src/yuzu/configuration/configure_cpu.h
+++ b/src/yuzu/configuration/configure_cpu.h
@@ -4,6 +4,7 @@
4#pragma once 4#pragma once
5 5
6#include <memory> 6#include <memory>
7#include <vector>
7#include <QWidget> 8#include <QWidget>
8#include "yuzu/configuration/configuration_shared.h" 9#include "yuzu/configuration/configuration_shared.h"
9#include "yuzu/configuration/shared_translation.h" 10#include "yuzu/configuration/shared_translation.h"
@@ -25,7 +26,7 @@ class Builder;
25class ConfigureCpu : public ConfigurationShared::Tab { 26class ConfigureCpu : public ConfigurationShared::Tab {
26public: 27public:
27 explicit ConfigureCpu(const Core::System& system_, 28 explicit ConfigureCpu(const Core::System& system_,
28 std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group, 29 std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group,
29 const ConfigurationShared::Builder& builder, QWidget* parent = nullptr); 30 const ConfigurationShared::Builder& builder, QWidget* parent = nullptr);
30 ~ConfigureCpu() override; 31 ~ConfigureCpu() override;
31 32
@@ -45,7 +46,7 @@ private:
45 const Core::System& system; 46 const Core::System& system;
46 47
47 const ConfigurationShared::ComboboxTranslationMap& combobox_translations; 48 const ConfigurationShared::ComboboxTranslationMap& combobox_translations;
48 std::forward_list<std::function<void(bool)>> apply_funcs{}; 49 std::vector<std::function<void(bool)>> apply_funcs{};
49 50
50 QComboBox* accuracy_combobox; 51 QComboBox* accuracy_combobox;
51}; 52};
diff --git a/src/yuzu/configuration/configure_dialog.h b/src/yuzu/configuration/configure_dialog.h
index 1bfc9f9d0..96e9a8c3e 100644
--- a/src/yuzu/configuration/configure_dialog.h
+++ b/src/yuzu/configuration/configure_dialog.h
@@ -3,7 +3,6 @@
3 3
4#pragma once 4#pragma once
5 5
6#include <forward_list>
7#include <memory> 6#include <memory>
8#include <vector> 7#include <vector>
9#include <QDialog> 8#include <QDialog>
@@ -74,7 +73,7 @@ private:
74 73
75 Core::System& system; 74 Core::System& system;
76 std::unique_ptr<ConfigurationShared::Builder> builder; 75 std::unique_ptr<ConfigurationShared::Builder> builder;
77 std::forward_list<ConfigurationShared::Tab*> tab_group; 76 std::vector<ConfigurationShared::Tab*> tab_group;
78 77
79 std::unique_ptr<ConfigureAudio> audio_tab; 78 std::unique_ptr<ConfigureAudio> audio_tab;
80 std::unique_ptr<ConfigureCpu> cpu_tab; 79 std::unique_ptr<ConfigureCpu> cpu_tab;
diff --git a/src/yuzu/configuration/configure_general.cpp b/src/yuzu/configuration/configure_general.cpp
index 54113543a..fc43a531d 100644
--- a/src/yuzu/configuration/configure_general.cpp
+++ b/src/yuzu/configuration/configure_general.cpp
@@ -3,6 +3,7 @@
3 3
4#include <functional> 4#include <functional>
5#include <utility> 5#include <utility>
6#include <vector>
6#include <QMessageBox> 7#include <QMessageBox>
7#include "common/settings.h" 8#include "common/settings.h"
8#include "core/core.h" 9#include "core/core.h"
@@ -12,10 +13,9 @@
12#include "yuzu/configuration/shared_widget.h" 13#include "yuzu/configuration/shared_widget.h"
13#include "yuzu/uisettings.h" 14#include "yuzu/uisettings.h"
14 15
15ConfigureGeneral::ConfigureGeneral( 16ConfigureGeneral::ConfigureGeneral(const Core::System& system_,
16 const Core::System& system_, 17 std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_,
17 std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_, 18 const ConfigurationShared::Builder& builder, QWidget* parent)
18 const ConfigurationShared::Builder& builder, QWidget* parent)
19 : Tab(group_, parent), ui{std::make_unique<Ui::ConfigureGeneral>()}, system{system_} { 19 : Tab(group_, parent), ui{std::make_unique<Ui::ConfigureGeneral>()}, system{system_} {
20 ui->setupUi(this); 20 ui->setupUi(this);
21 21
diff --git a/src/yuzu/configuration/configure_general.h b/src/yuzu/configuration/configure_general.h
index f8ed3f8ab..2d953f679 100644
--- a/src/yuzu/configuration/configure_general.h
+++ b/src/yuzu/configuration/configure_general.h
@@ -5,6 +5,7 @@
5 5
6#include <functional> 6#include <functional>
7#include <memory> 7#include <memory>
8#include <vector>
8#include <QWidget> 9#include <QWidget>
9#include "yuzu/configuration/configuration_shared.h" 10#include "yuzu/configuration/configuration_shared.h"
10 11
@@ -26,7 +27,7 @@ class Builder;
26class ConfigureGeneral : public ConfigurationShared::Tab { 27class ConfigureGeneral : public ConfigurationShared::Tab {
27public: 28public:
28 explicit ConfigureGeneral(const Core::System& system_, 29 explicit ConfigureGeneral(const Core::System& system_,
29 std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group, 30 std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group,
30 const ConfigurationShared::Builder& builder, 31 const ConfigurationShared::Builder& builder,
31 QWidget* parent = nullptr); 32 QWidget* parent = nullptr);
32 ~ConfigureGeneral() override; 33 ~ConfigureGeneral() override;
@@ -46,7 +47,7 @@ private:
46 47
47 std::unique_ptr<Ui::ConfigureGeneral> ui; 48 std::unique_ptr<Ui::ConfigureGeneral> ui;
48 49
49 std::forward_list<std::function<void(bool)>> apply_funcs{}; 50 std::vector<std::function<void(bool)>> apply_funcs{};
50 51
51 const Core::System& system; 52 const Core::System& system;
52}; 53};
diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp
index 31e87ccf5..a6f711597 100644
--- a/src/yuzu/configuration/configure_graphics.cpp
+++ b/src/yuzu/configuration/configure_graphics.cpp
@@ -77,11 +77,11 @@ static constexpr Settings::VSyncMode PresentModeToSetting(VkPresentModeKHR mode)
77 } 77 }
78} 78}
79 79
80ConfigureGraphics::ConfigureGraphics( 80ConfigureGraphics::ConfigureGraphics(const Core::System& system_,
81 const Core::System& system_, std::vector<VkDeviceInfo::Record>& records_, 81 std::vector<VkDeviceInfo::Record>& records_,
82 const std::function<void()>& expose_compute_option_, 82 const std::function<void()>& expose_compute_option_,
83 std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_, 83 std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_,
84 const ConfigurationShared::Builder& builder, QWidget* parent) 84 const ConfigurationShared::Builder& builder, QWidget* parent)
85 : ConfigurationShared::Tab(group_, parent), ui{std::make_unique<Ui::ConfigureGraphics>()}, 85 : ConfigurationShared::Tab(group_, parent), ui{std::make_unique<Ui::ConfigureGraphics>()},
86 records{records_}, expose_compute_option{expose_compute_option_}, system{system_}, 86 records{records_}, expose_compute_option{expose_compute_option_}, system{system_},
87 combobox_translations{builder.ComboboxTranslations()}, 87 combobox_translations{builder.ComboboxTranslations()},
@@ -228,7 +228,7 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) {
228 QLayout& graphics_layout = *ui->graphics_widget->layout(); 228 QLayout& graphics_layout = *ui->graphics_widget->layout();
229 229
230 std::map<u32, QWidget*> hold_graphics; 230 std::map<u32, QWidget*> hold_graphics;
231 std::forward_list<QWidget*> hold_api; 231 std::vector<QWidget*> hold_api;
232 232
233 for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) { 233 for (const auto setting : Settings::values.linkage.by_category[Settings::Category::Renderer]) {
234 ConfigurationShared::Widget* widget = [&]() { 234 ConfigurationShared::Widget* widget = [&]() {
@@ -268,12 +268,12 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) {
268 } 268 }
269 } else if (setting->Id() == Settings::values.vulkan_device.Id()) { 269 } else if (setting->Id() == Settings::values.vulkan_device.Id()) {
270 // Keep track of vulkan_device's combobox so we can populate it 270 // Keep track of vulkan_device's combobox so we can populate it
271 hold_api.push_front(widget); 271 hold_api.push_back(widget);
272 vulkan_device_combobox = widget->combobox; 272 vulkan_device_combobox = widget->combobox;
273 vulkan_device_widget = widget; 273 vulkan_device_widget = widget;
274 } else if (setting->Id() == Settings::values.shader_backend.Id()) { 274 } else if (setting->Id() == Settings::values.shader_backend.Id()) {
275 // Keep track of shader_backend's combobox so we can populate it 275 // Keep track of shader_backend's combobox so we can populate it
276 hold_api.push_front(widget); 276 hold_api.push_back(widget);
277 shader_backend_combobox = widget->combobox; 277 shader_backend_combobox = widget->combobox;
278 shader_backend_widget = widget; 278 shader_backend_widget = widget;
279 } else if (setting->Id() == Settings::values.vsync_mode.Id()) { 279 } else if (setting->Id() == Settings::values.vsync_mode.Id()) {
@@ -296,7 +296,7 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) {
296 // Background color is too specific to build into the new system, so we manage it here 296 // Background color is too specific to build into the new system, so we manage it here
297 // (3 settings, all collected into a single widget with a QColor to manage on top) 297 // (3 settings, all collected into a single widget with a QColor to manage on top)
298 if (Settings::IsConfiguringGlobal()) { 298 if (Settings::IsConfiguringGlobal()) {
299 apply_funcs.push_front([this](bool powered_on) { 299 apply_funcs.push_back([this](bool powered_on) {
300 Settings::values.bg_red.SetValue(static_cast<u8>(bg_color.red())); 300 Settings::values.bg_red.SetValue(static_cast<u8>(bg_color.red()));
301 Settings::values.bg_green.SetValue(static_cast<u8>(bg_color.green())); 301 Settings::values.bg_green.SetValue(static_cast<u8>(bg_color.green()));
302 Settings::values.bg_blue.SetValue(static_cast<u8>(bg_color.blue())); 302 Settings::values.bg_blue.SetValue(static_cast<u8>(bg_color.blue()));
@@ -322,7 +322,7 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) {
322 bg_restore_button->setEnabled(true); 322 bg_restore_button->setEnabled(true);
323 }); 323 });
324 324
325 apply_funcs.push_front([bg_restore_button, this](bool powered_on) { 325 apply_funcs.push_back([bg_restore_button, this](bool powered_on) {
326 const bool using_global = !bg_restore_button->isEnabled(); 326 const bool using_global = !bg_restore_button->isEnabled();
327 Settings::values.bg_red.SetGlobal(using_global); 327 Settings::values.bg_red.SetGlobal(using_global);
328 Settings::values.bg_green.SetGlobal(using_global); 328 Settings::values.bg_green.SetGlobal(using_global);
diff --git a/src/yuzu/configuration/configure_graphics.h b/src/yuzu/configuration/configure_graphics.h
index 633a28414..02d9b00f1 100644
--- a/src/yuzu/configuration/configure_graphics.h
+++ b/src/yuzu/configuration/configure_graphics.h
@@ -46,7 +46,7 @@ public:
46 explicit ConfigureGraphics(const Core::System& system_, 46 explicit ConfigureGraphics(const Core::System& system_,
47 std::vector<VkDeviceInfo::Record>& records, 47 std::vector<VkDeviceInfo::Record>& records,
48 const std::function<void()>& expose_compute_option_, 48 const std::function<void()>& expose_compute_option_,
49 std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group, 49 std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group,
50 const ConfigurationShared::Builder& builder, 50 const ConfigurationShared::Builder& builder,
51 QWidget* parent = nullptr); 51 QWidget* parent = nullptr);
52 ~ConfigureGraphics() override; 52 ~ConfigureGraphics() override;
@@ -80,7 +80,7 @@ private:
80 std::unique_ptr<Ui::ConfigureGraphics> ui; 80 std::unique_ptr<Ui::ConfigureGraphics> ui;
81 QColor bg_color; 81 QColor bg_color;
82 82
83 std::forward_list<std::function<void(bool)>> apply_funcs{}; 83 std::vector<std::function<void(bool)>> apply_funcs{};
84 84
85 std::vector<VkDeviceInfo::Record>& records; 85 std::vector<VkDeviceInfo::Record>& records;
86 std::vector<QString> vulkan_devices; 86 std::vector<QString> vulkan_devices;
diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp
index 757e4659d..f60214ff9 100644
--- a/src/yuzu/configuration/configure_graphics_advanced.cpp
+++ b/src/yuzu/configuration/configure_graphics_advanced.cpp
@@ -1,6 +1,7 @@
1// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project 1// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
2// SPDX-License-Identifier: GPL-2.0-or-later 2// SPDX-License-Identifier: GPL-2.0-or-later
3 3
4#include <vector>
4#include <QLabel> 5#include <QLabel>
5#include <qnamespace.h> 6#include <qnamespace.h>
6#include "common/settings.h" 7#include "common/settings.h"
@@ -12,8 +13,7 @@
12#include "yuzu/configuration/shared_widget.h" 13#include "yuzu/configuration/shared_widget.h"
13 14
14ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced( 15ConfigureGraphicsAdvanced::ConfigureGraphicsAdvanced(
15 const Core::System& system_, 16 const Core::System& system_, std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_,
16 std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_,
17 const ConfigurationShared::Builder& builder, QWidget* parent) 17 const ConfigurationShared::Builder& builder, QWidget* parent)
18 : Tab(group_, parent), ui{std::make_unique<Ui::ConfigureGraphicsAdvanced>()}, system{system_} { 18 : Tab(group_, parent), ui{std::make_unique<Ui::ConfigureGraphicsAdvanced>()}, system{system_} {
19 19
diff --git a/src/yuzu/configuration/configure_graphics_advanced.h b/src/yuzu/configuration/configure_graphics_advanced.h
index 5530827d1..78b5389c3 100644
--- a/src/yuzu/configuration/configure_graphics_advanced.h
+++ b/src/yuzu/configuration/configure_graphics_advanced.h
@@ -4,6 +4,7 @@
4#pragma once 4#pragma once
5 5
6#include <memory> 6#include <memory>
7#include <vector>
7#include <QWidget> 8#include <QWidget>
8#include "yuzu/configuration/configuration_shared.h" 9#include "yuzu/configuration/configuration_shared.h"
9 10
@@ -22,8 +23,7 @@ class Builder;
22class ConfigureGraphicsAdvanced : public ConfigurationShared::Tab { 23class ConfigureGraphicsAdvanced : public ConfigurationShared::Tab {
23public: 24public:
24 explicit ConfigureGraphicsAdvanced( 25 explicit ConfigureGraphicsAdvanced(
25 const Core::System& system_, 26 const Core::System& system_, std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group,
26 std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group,
27 const ConfigurationShared::Builder& builder, QWidget* parent = nullptr); 27 const ConfigurationShared::Builder& builder, QWidget* parent = nullptr);
28 ~ConfigureGraphicsAdvanced() override; 28 ~ConfigureGraphicsAdvanced() override;
29 29
@@ -41,7 +41,7 @@ private:
41 41
42 const Core::System& system; 42 const Core::System& system;
43 43
44 std::forward_list<std::function<void(bool)>> apply_funcs; 44 std::vector<std::function<void(bool)>> apply_funcs;
45 45
46 QWidget* checkbox_enable_compute_pipelines{}; 46 QWidget* checkbox_enable_compute_pipelines{};
47}; 47};
diff --git a/src/yuzu/configuration/configure_per_game.cpp b/src/yuzu/configuration/configure_per_game.cpp
index cee8e726d..cd8b3012e 100644
--- a/src/yuzu/configuration/configure_per_game.cpp
+++ b/src/yuzu/configuration/configure_per_game.cpp
@@ -44,7 +44,7 @@ ConfigurePerGame::ConfigurePerGame(QWidget* parent, u64 title_id_, const std::st
44 : QDialog(parent), 44 : QDialog(parent),
45 ui(std::make_unique<Ui::ConfigurePerGame>()), title_id{title_id_}, system{system_}, 45 ui(std::make_unique<Ui::ConfigurePerGame>()), title_id{title_id_}, system{system_},
46 builder{std::make_unique<ConfigurationShared::Builder>(this, !system_.IsPoweredOn())}, 46 builder{std::make_unique<ConfigurationShared::Builder>(this, !system_.IsPoweredOn())},
47 tab_group{std::make_shared<std::forward_list<ConfigurationShared::Tab*>>()} { 47 tab_group{std::make_shared<std::vector<ConfigurationShared::Tab*>>()} {
48 const auto file_path = std::filesystem::path(Common::FS::ToU8String(file_name)); 48 const auto file_path = std::filesystem::path(Common::FS::ToU8String(file_name));
49 const auto config_file_name = title_id == 0 ? Common::FS::PathToUTF8String(file_path.filename()) 49 const auto config_file_name = title_id == 0 ? Common::FS::PathToUTF8String(file_path.filename())
50 : fmt::format("{:016X}", title_id); 50 : fmt::format("{:016X}", title_id);
diff --git a/src/yuzu/configuration/configure_per_game.h b/src/yuzu/configuration/configure_per_game.h
index 4ddd18c1f..1a727f32c 100644
--- a/src/yuzu/configuration/configure_per_game.h
+++ b/src/yuzu/configuration/configure_per_game.h
@@ -3,7 +3,6 @@
3 3
4#pragma once 4#pragma once
5 5
6#include <forward_list>
7#include <memory> 6#include <memory>
8#include <string> 7#include <string>
9#include <vector> 8#include <vector>
@@ -77,7 +76,7 @@ private:
77 76
78 Core::System& system; 77 Core::System& system;
79 std::unique_ptr<ConfigurationShared::Builder> builder; 78 std::unique_ptr<ConfigurationShared::Builder> builder;
80 std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> tab_group; 79 std::shared_ptr<std::vector<ConfigurationShared::Tab*>> tab_group;
81 80
82 std::unique_ptr<ConfigurePerGameAddons> addons_tab; 81 std::unique_ptr<ConfigurePerGameAddons> addons_tab;
83 std::unique_ptr<ConfigureAudio> audio_tab; 82 std::unique_ptr<ConfigureAudio> audio_tab;
diff --git a/src/yuzu/configuration/configure_system.cpp b/src/yuzu/configuration/configure_system.cpp
index 7884886c3..93a0a4102 100644
--- a/src/yuzu/configuration/configure_system.cpp
+++ b/src/yuzu/configuration/configure_system.cpp
@@ -2,8 +2,8 @@
2// SPDX-License-Identifier: GPL-2.0-or-later 2// SPDX-License-Identifier: GPL-2.0-or-later
3 3
4#include <chrono> 4#include <chrono>
5#include <forward_list>
6#include <optional> 5#include <optional>
6#include <vector>
7 7
8#include <QCheckBox> 8#include <QCheckBox>
9#include <QComboBox> 9#include <QComboBox>
@@ -44,9 +44,9 @@ static bool IsValidLocale(u32 region_index, u32 language_index) {
44 return ((LOCALE_BLOCKLIST.at(region_index) >> language_index) & 1) == 0; 44 return ((LOCALE_BLOCKLIST.at(region_index) >> language_index) & 1) == 0;
45} 45}
46 46
47ConfigureSystem::ConfigureSystem( 47ConfigureSystem::ConfigureSystem(Core::System& system_,
48 Core::System& system_, std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group_, 48 std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group_,
49 const ConfigurationShared::Builder& builder, QWidget* parent) 49 const ConfigurationShared::Builder& builder, QWidget* parent)
50 : Tab(group_, parent), ui{std::make_unique<Ui::ConfigureSystem>()}, system{system_} { 50 : Tab(group_, parent), ui{std::make_unique<Ui::ConfigureSystem>()}, system{system_} {
51 ui->setupUi(this); 51 ui->setupUi(this);
52 52
@@ -95,10 +95,10 @@ void ConfigureSystem::Setup(const ConfigurationShared::Builder& builder) {
95 std::map<u32, QWidget*> core_hold{}; 95 std::map<u32, QWidget*> core_hold{};
96 std::map<u32, QWidget*> system_hold{}; 96 std::map<u32, QWidget*> system_hold{};
97 97
98 std::forward_list<Settings::BasicSetting*> settings; 98 std::vector<Settings::BasicSetting*> settings;
99 auto push = [&settings](auto& list) { 99 auto push = [&settings](auto& list) {
100 for (auto setting : list) { 100 for (auto setting : list) {
101 settings.push_front(setting); 101 settings.push_back(setting);
102 } 102 }
103 }; 103 };
104 104
diff --git a/src/yuzu/configuration/configure_system.h b/src/yuzu/configuration/configure_system.h
index f63aedda0..eab99a48a 100644
--- a/src/yuzu/configuration/configure_system.h
+++ b/src/yuzu/configuration/configure_system.h
@@ -3,9 +3,9 @@
3 3
4#pragma once 4#pragma once
5 5
6#include <forward_list>
7#include <functional> 6#include <functional>
8#include <memory> 7#include <memory>
8#include <vector>
9 9
10#include <QWidget> 10#include <QWidget>
11#include "yuzu/configuration/configuration_shared.h" 11#include "yuzu/configuration/configuration_shared.h"
@@ -29,7 +29,7 @@ class Builder;
29class ConfigureSystem : public ConfigurationShared::Tab { 29class ConfigureSystem : public ConfigurationShared::Tab {
30public: 30public:
31 explicit ConfigureSystem(Core::System& system_, 31 explicit ConfigureSystem(Core::System& system_,
32 std::shared_ptr<std::forward_list<ConfigurationShared::Tab*>> group, 32 std::shared_ptr<std::vector<ConfigurationShared::Tab*>> group,
33 const ConfigurationShared::Builder& builder, 33 const ConfigurationShared::Builder& builder,
34 QWidget* parent = nullptr); 34 QWidget* parent = nullptr);
35 ~ConfigureSystem() override; 35 ~ConfigureSystem() override;
@@ -43,7 +43,7 @@ private:
43 43
44 void Setup(const ConfigurationShared::Builder& builder); 44 void Setup(const ConfigurationShared::Builder& builder);
45 45
46 std::forward_list<std::function<void(bool)>> apply_funcs{}; 46 std::vector<std::function<void(bool)>> apply_funcs{};
47 47
48 std::unique_ptr<Ui::ConfigureSystem> ui; 48 std::unique_ptr<Ui::ConfigureSystem> ui;
49 bool enabled = false; 49 bool enabled = false;
diff --git a/src/yuzu/configuration/shared_widget.cpp b/src/yuzu/configuration/shared_widget.cpp
index c9ab461f6..cf33bce2b 100644
--- a/src/yuzu/configuration/shared_widget.cpp
+++ b/src/yuzu/configuration/shared_widget.cpp
@@ -547,7 +547,7 @@ Widget::~Widget() = default;
547 547
548Widget::Widget(Settings::BasicSetting* setting_, const TranslationMap& translations_, 548Widget::Widget(Settings::BasicSetting* setting_, const TranslationMap& translations_,
549 const ComboboxTranslationMap& combobox_translations_, QWidget* parent_, 549 const ComboboxTranslationMap& combobox_translations_, QWidget* parent_,
550 bool runtime_lock_, std::forward_list<std::function<void(bool)>>& apply_funcs_, 550 bool runtime_lock_, std::vector<std::function<void(bool)>>& apply_funcs_,
551 RequestType request, bool managed, float multiplier, 551 RequestType request, bool managed, float multiplier,
552 Settings::BasicSetting* other_setting, const QString& suffix) 552 Settings::BasicSetting* other_setting, const QString& suffix)
553 : QWidget(parent_), parent{parent_}, translations{translations_}, 553 : QWidget(parent_), parent{parent_}, translations{translations_},
@@ -584,7 +584,7 @@ Widget::Widget(Settings::BasicSetting* setting_, const TranslationMap& translati
584 return; 584 return;
585 } 585 }
586 586
587 apply_funcs.push_front([load_func, setting_](bool powered_on) { 587 apply_funcs.push_back([load_func, setting_](bool powered_on) {
588 if (setting_->RuntimeModfiable() || !powered_on) { 588 if (setting_->RuntimeModfiable() || !powered_on) {
589 load_func(); 589 load_func();
590 } 590 }
@@ -607,7 +607,7 @@ Builder::Builder(QWidget* parent_, bool runtime_lock_)
607Builder::~Builder() = default; 607Builder::~Builder() = default;
608 608
609Widget* Builder::BuildWidget(Settings::BasicSetting* setting, 609Widget* Builder::BuildWidget(Settings::BasicSetting* setting,
610 std::forward_list<std::function<void(bool)>>& apply_funcs, 610 std::vector<std::function<void(bool)>>& apply_funcs,
611 RequestType request, bool managed, float multiplier, 611 RequestType request, bool managed, float multiplier,
612 Settings::BasicSetting* other_setting, const QString& suffix) const { 612 Settings::BasicSetting* other_setting, const QString& suffix) const {
613 if (!Settings::IsConfiguringGlobal() && !setting->Switchable()) { 613 if (!Settings::IsConfiguringGlobal() && !setting->Switchable()) {
@@ -624,7 +624,7 @@ Widget* Builder::BuildWidget(Settings::BasicSetting* setting,
624} 624}
625 625
626Widget* Builder::BuildWidget(Settings::BasicSetting* setting, 626Widget* Builder::BuildWidget(Settings::BasicSetting* setting,
627 std::forward_list<std::function<void(bool)>>& apply_funcs, 627 std::vector<std::function<void(bool)>>& apply_funcs,
628 Settings::BasicSetting* other_setting, RequestType request, 628 Settings::BasicSetting* other_setting, RequestType request,
629 const QString& suffix) const { 629 const QString& suffix) const {
630 return BuildWidget(setting, apply_funcs, request, true, 1.0f, other_setting, suffix); 630 return BuildWidget(setting, apply_funcs, request, true, 1.0f, other_setting, suffix);
diff --git a/src/yuzu/configuration/shared_widget.h b/src/yuzu/configuration/shared_widget.h
index b3f9efd78..e64693bab 100644
--- a/src/yuzu/configuration/shared_widget.h
+++ b/src/yuzu/configuration/shared_widget.h
@@ -3,10 +3,10 @@
3 3
4#pragma once 4#pragma once
5 5
6#include <forward_list>
7#include <functional> 6#include <functional>
8#include <memory> 7#include <memory>
9#include <string> 8#include <string>
9#include <vector>
10#include <QString> 10#include <QString>
11#include <QStringLiteral> 11#include <QStringLiteral>
12#include <QWidget> 12#include <QWidget>
@@ -62,7 +62,7 @@ public:
62 */ 62 */
63 explicit Widget(Settings::BasicSetting* setting, const TranslationMap& translations, 63 explicit Widget(Settings::BasicSetting* setting, const TranslationMap& translations,
64 const ComboboxTranslationMap& combobox_translations, QWidget* parent, 64 const ComboboxTranslationMap& combobox_translations, QWidget* parent,
65 bool runtime_lock, std::forward_list<std::function<void(bool)>>& apply_funcs_, 65 bool runtime_lock, std::vector<std::function<void(bool)>>& apply_funcs_,
66 RequestType request = RequestType::Default, bool managed = true, 66 RequestType request = RequestType::Default, bool managed = true,
67 float multiplier = 1.0f, Settings::BasicSetting* other_setting = nullptr, 67 float multiplier = 1.0f, Settings::BasicSetting* other_setting = nullptr,
68 const QString& suffix = QStringLiteral("")); 68 const QString& suffix = QStringLiteral(""));
@@ -125,7 +125,7 @@ private:
125 const TranslationMap& translations; 125 const TranslationMap& translations;
126 const ComboboxTranslationMap& combobox_enumerations; 126 const ComboboxTranslationMap& combobox_enumerations;
127 Settings::BasicSetting& setting; 127 Settings::BasicSetting& setting;
128 std::forward_list<std::function<void(bool)>>& apply_funcs; 128 std::vector<std::function<void(bool)>>& apply_funcs;
129 129
130 bool created{false}; 130 bool created{false};
131 bool runtime_lock{false}; 131 bool runtime_lock{false};
@@ -137,13 +137,13 @@ public:
137 ~Builder(); 137 ~Builder();
138 138
139 Widget* BuildWidget(Settings::BasicSetting* setting, 139 Widget* BuildWidget(Settings::BasicSetting* setting,
140 std::forward_list<std::function<void(bool)>>& apply_funcs, 140 std::vector<std::function<void(bool)>>& apply_funcs,
141 RequestType request = RequestType::Default, bool managed = true, 141 RequestType request = RequestType::Default, bool managed = true,
142 float multiplier = 1.0f, Settings::BasicSetting* other_setting = nullptr, 142 float multiplier = 1.0f, Settings::BasicSetting* other_setting = nullptr,
143 const QString& suffix = QStringLiteral("")) const; 143 const QString& suffix = QStringLiteral("")) const;
144 144
145 Widget* BuildWidget(Settings::BasicSetting* setting, 145 Widget* BuildWidget(Settings::BasicSetting* setting,
146 std::forward_list<std::function<void(bool)>>& apply_funcs, 146 std::vector<std::function<void(bool)>>& apply_funcs,
147 Settings::BasicSetting* other_setting, 147 Settings::BasicSetting* other_setting,
148 RequestType request = RequestType::Default, 148 RequestType request = RequestType::Default,
149 const QString& suffix = QStringLiteral("")) const; 149 const QString& suffix = QStringLiteral("")) const;