فهرست منبع

applets/controller: Load configuration prior to setting up connections

This avoids unintentionally changing the states of elements while loading them in.
Morph 5 سال پیش
والد
کامیت
72b2f5d34f
2فایلهای تغییر یافته به همراه29 افزوده شده و 23 حذف شده
  1. 26 20
      src/yuzu/applets/controller.cpp
  2. 3 3
      src/yuzu/applets/controller.h

+ 26 - 20
src/yuzu/applets/controller.cpp

@@ -171,7 +171,18 @@ QtControllerSelectorDialog::QtControllerSelectorDialog(
         ui->checkboxPlayer7Connected, ui->checkboxPlayer8Connected,
     };
 
+    // Setup/load everything prior to setting up connections.
+    // This avoids unintentionally changing the states of elements while loading them in.
+    SetSupportedControllers();
+    DisableUnsupportedPlayers();
+    LoadConfiguration();
+
     for (std::size_t i = 0; i < NUM_PLAYERS; ++i) {
+        SetExplainText(i);
+        UpdateControllerIcon(i);
+        UpdateLEDPattern(i);
+        UpdateBorderColor(i);
+
         connect(player_groupboxes[i], &QGroupBox::toggled, [this, i](bool checked) {
             if (checked) {
                 for (std::size_t index = 0; index <= i; ++index) {
@@ -208,8 +219,6 @@ QtControllerSelectorDialog::QtControllerSelectorDialog(
                                           Settings::ControllerType::Handheld);
                     });
         }
-
-        SetExplainText(i);
     }
 
     connect(ui->inputConfigButton, &QPushButton::clicked, this,
@@ -218,10 +227,6 @@ QtControllerSelectorDialog::QtControllerSelectorDialog(
     connect(ui->buttonBox, &QDialogButtonBox::accepted, this,
             &QtControllerSelectorDialog::ApplyConfiguration);
 
-    SetSupportedControllers();
-    DisableUnsupportedPlayers();
-    LoadConfiguration();
-
     // If keep_controllers_connected is false, forcefully disconnect all controllers
     if (!parameters.keep_controllers_connected) {
         for (auto player : player_groupboxes) {
@@ -249,6 +254,21 @@ void QtControllerSelectorDialog::ApplyConfiguration() {
     Settings::values.vibration_enabled = ui->vibrationGroup->isChecked();
 }
 
+void QtControllerSelectorDialog::LoadConfiguration() {
+    for (std::size_t index = 0; index < NUM_PLAYERS; ++index) {
+        const auto connected = Settings::values.players[index].connected ||
+                               (index == 0 && Settings::values.players[8].connected);
+        player_groupboxes[index]->setChecked(connected);
+        connected_controller_checkboxes[index]->setChecked(connected);
+        emulated_controllers[index]->setCurrentIndex(
+            GetIndexFromControllerType(Settings::values.players[index].controller_type));
+    }
+
+    UpdateDockedState(Settings::values.players[8].connected);
+
+    ui->vibrationGroup->setChecked(Settings::values.vibration_enabled);
+}
+
 void QtControllerSelectorDialog::CallConfigureInputDialog() {
     const auto max_supported_players = parameters.enable_single_mode ? 1 : parameters.max_players;
 
@@ -557,20 +577,6 @@ void QtControllerSelectorDialog::DisableUnsupportedPlayers() {
     }
 }
 
-void QtControllerSelectorDialog::LoadConfiguration() {
-    for (std::size_t index = 0; index < NUM_PLAYERS; ++index) {
-        const auto connected = Settings::values.players[index].connected ||
-                               (index == 0 && Settings::values.players[8].connected);
-        player_groupboxes[index]->setChecked(connected);
-        emulated_controllers[index]->setCurrentIndex(
-            GetIndexFromControllerType(Settings::values.players[index].controller_type));
-    }
-
-    UpdateDockedState(Settings::values.players[8].connected);
-
-    ui->vibrationGroup->setChecked(Settings::values.vibration_enabled);
-}
-
 QtControllerSelector::QtControllerSelector(GMainWindow& parent) {
     connect(this, &QtControllerSelector::MainWindowReconfigureControllers, &parent,
             &GMainWindow::ControllerSelectorReconfigureControllers, Qt::QueuedConnection);

+ 3 - 3
src/yuzu/applets/controller.h

@@ -37,6 +37,9 @@ private:
     // Applies the current configuration.
     void ApplyConfiguration();
 
+    // Loads the current input configuration into the frontend applet.
+    void LoadConfiguration();
+
     // Initializes the "Configure Input" Dialog.
     void CallConfigureInputDialog();
 
@@ -68,9 +71,6 @@ private:
     // Disables and disconnects unsupported players based on the given parameters.
     void DisableUnsupportedPlayers();
 
-    // Loads the current input configuration into the frontend applet.
-    void LoadConfiguration();
-
     std::unique_ptr<Ui::QtControllerSelectorDialog> ui;
 
     // Parameters sent in from the backend HLE applet.