configure_input: Use unique pointers for player_controllers array

This commit is contained in:
ameerj
2022-11-12 22:04:19 -05:00
parent 8cc5ad8742
commit 04a71da45d
2 changed files with 24 additions and 23 deletions
+23 -22
View File
@@ -76,22 +76,22 @@ void ConfigureInput::Initialize(InputCommon::InputSubsystem* input_subsystem,
const bool is_powered_on = system.IsPoweredOn(); const bool is_powered_on = system.IsPoweredOn();
auto& hid_core = system.HIDCore(); auto& hid_core = system.HIDCore();
player_controllers = { player_controllers = {
new ConfigureInputPlayer(this, 0, ui->consoleInputSettings, input_subsystem, profiles.get(), std::make_unique<ConfigureInputPlayer>(this, 0, ui->consoleInputSettings, input_subsystem,
hid_core, is_powered_on), profiles.get(), hid_core, is_powered_on),
new ConfigureInputPlayer(this, 1, ui->consoleInputSettings, input_subsystem, profiles.get(), std::make_unique<ConfigureInputPlayer>(this, 1, ui->consoleInputSettings, input_subsystem,
hid_core, is_powered_on), profiles.get(), hid_core, is_powered_on),
new ConfigureInputPlayer(this, 2, ui->consoleInputSettings, input_subsystem, profiles.get(), std::make_unique<ConfigureInputPlayer>(this, 2, ui->consoleInputSettings, input_subsystem,
hid_core, is_powered_on), profiles.get(), hid_core, is_powered_on),
new ConfigureInputPlayer(this, 3, ui->consoleInputSettings, input_subsystem, profiles.get(), std::make_unique<ConfigureInputPlayer>(this, 3, ui->consoleInputSettings, input_subsystem,
hid_core, is_powered_on), profiles.get(), hid_core, is_powered_on),
new ConfigureInputPlayer(this, 4, ui->consoleInputSettings, input_subsystem, profiles.get(), std::make_unique<ConfigureInputPlayer>(this, 4, ui->consoleInputSettings, input_subsystem,
hid_core, is_powered_on), profiles.get(), hid_core, is_powered_on),
new ConfigureInputPlayer(this, 5, ui->consoleInputSettings, input_subsystem, profiles.get(), std::make_unique<ConfigureInputPlayer>(this, 5, ui->consoleInputSettings, input_subsystem,
hid_core, is_powered_on), profiles.get(), hid_core, is_powered_on),
new ConfigureInputPlayer(this, 6, ui->consoleInputSettings, input_subsystem, profiles.get(), std::make_unique<ConfigureInputPlayer>(this, 6, ui->consoleInputSettings, input_subsystem,
hid_core, is_powered_on), profiles.get(), hid_core, is_powered_on),
new ConfigureInputPlayer(this, 7, ui->consoleInputSettings, input_subsystem, profiles.get(), std::make_unique<ConfigureInputPlayer>(this, 7, ui->consoleInputSettings, input_subsystem,
hid_core, is_powered_on), profiles.get(), hid_core, is_powered_on),
}; };
player_tabs = { player_tabs = {
@@ -111,9 +111,10 @@ void ConfigureInput::Initialize(InputCommon::InputSubsystem* input_subsystem,
}; };
for (std::size_t i = 0; i < player_tabs.size(); ++i) { for (std::size_t i = 0; i < player_tabs.size(); ++i) {
auto* player_controller_ptr = player_controllers[i].get();
player_tabs[i]->setLayout(new QHBoxLayout(player_tabs[i])); player_tabs[i]->setLayout(new QHBoxLayout(player_tabs[i]));
player_tabs[i]->layout()->addWidget(player_controllers[i]); player_tabs[i]->layout()->addWidget(player_controller_ptr);
connect(player_controllers[i], &ConfigureInputPlayer::Connected, [&, i](bool is_connected) { connect(player_controller_ptr, &ConfigureInputPlayer::Connected, [&, i](bool is_connected) {
// Ensures that the controllers are always connected in sequential order // Ensures that the controllers are always connected in sequential order
if (is_connected) { if (is_connected) {
for (std::size_t index = 0; index <= i; ++index) { for (std::size_t index = 0; index <= i; ++index) {
@@ -125,9 +126,9 @@ void ConfigureInput::Initialize(InputCommon::InputSubsystem* input_subsystem,
} }
} }
}); });
connect(player_controllers[i], &ConfigureInputPlayer::RefreshInputDevices, this, connect(player_controller_ptr, &ConfigureInputPlayer::RefreshInputDevices, this,
&ConfigureInput::UpdateAllInputDevices); &ConfigureInput::UpdateAllInputDevices);
connect(player_controllers[i], &ConfigureInputPlayer::RefreshInputProfiles, this, connect(player_controller_ptr, &ConfigureInputPlayer::RefreshInputProfiles, this,
&ConfigureInput::UpdateAllInputProfiles, Qt::QueuedConnection); &ConfigureInput::UpdateAllInputProfiles, Qt::QueuedConnection);
connect(player_connected[i], &QCheckBox::stateChanged, [this, i](int state) { connect(player_connected[i], &QCheckBox::stateChanged, [this, i](int state) {
player_controllers[i]->ConnectPlayer(state == Qt::Checked); player_controllers[i]->ConnectPlayer(state == Qt::Checked);
@@ -141,7 +142,7 @@ void ConfigureInput::Initialize(InputCommon::InputSubsystem* input_subsystem,
} }
} }
// Only the first player can choose handheld mode so connect the signal just to player 1 // Only the first player can choose handheld mode so connect the signal just to player 1
connect(player_controllers[0], &ConfigureInputPlayer::HandheldStateChanged, connect(player_controllers[0].get(), &ConfigureInputPlayer::HandheldStateChanged,
[this](bool is_handheld) { UpdateDockedState(is_handheld); }); [this](bool is_handheld) { UpdateDockedState(is_handheld); });
advanced = new ConfigureInputAdvanced(this); advanced = new ConfigureInputAdvanced(this);
@@ -189,7 +190,7 @@ QList<QWidget*> ConfigureInput::GetSubTabs() const {
} }
void ConfigureInput::ApplyConfiguration() { void ConfigureInput::ApplyConfiguration() {
for (auto* controller : player_controllers) { for (const auto& controller : player_controllers) {
controller->ApplyConfiguration(); controller->ApplyConfiguration();
} }
+1 -1
View File
@@ -68,7 +68,7 @@ private:
std::unique_ptr<InputProfiles> profiles; std::unique_ptr<InputProfiles> profiles;
std::array<ConfigureInputPlayer*, 8> player_controllers; std::array<std::unique_ptr<ConfigureInputPlayer>, 8> player_controllers;
std::array<QWidget*, 8> player_tabs; std::array<QWidget*, 8> player_tabs;
std::array<QCheckBox*, 8> player_connected; std::array<QCheckBox*, 8> player_connected;
ConfigureInputAdvanced* advanced; ConfigureInputAdvanced* advanced;