summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/frontend/applets/controller.cpp2
-rw-r--r--src/core/frontend/applets/controller.h2
-rw-r--r--src/core/hle/service/am/applets/applet_controller.cpp12
-rw-r--r--src/core/hle/service/am/applets/applet_controller.h9
-rw-r--r--src/yuzu/applets/qt_controller.cpp8
-rw-r--r--src/yuzu/applets/qt_controller.h2
-rw-r--r--src/yuzu/applets/qt_controller.ui8
-rw-r--r--src/yuzu/main.cpp7
-rw-r--r--src/yuzu/main.h2
9 files changed, 33 insertions, 19 deletions
diff --git a/src/core/frontend/applets/controller.cpp b/src/core/frontend/applets/controller.cpp
index 8e586e938..3300d4f79 100644
--- a/src/core/frontend/applets/controller.cpp
+++ b/src/core/frontend/applets/controller.cpp
@@ -71,7 +71,7 @@ void DefaultControllerApplet::ReconfigureControllers(ReconfigureCallback callbac
71 } 71 }
72 } 72 }
73 73
74 callback(); 74 callback(true);
75} 75}
76 76
77} // namespace Core::Frontend 77} // namespace Core::Frontend
diff --git a/src/core/frontend/applets/controller.h b/src/core/frontend/applets/controller.h
index 5c488387d..19a2db6bf 100644
--- a/src/core/frontend/applets/controller.h
+++ b/src/core/frontend/applets/controller.h
@@ -37,7 +37,7 @@ struct ControllerParameters {
37 37
38class ControllerApplet : public Applet { 38class ControllerApplet : public Applet {
39public: 39public:
40 using ReconfigureCallback = std::function<void()>; 40 using ReconfigureCallback = std::function<void(bool)>;
41 41
42 virtual ~ControllerApplet(); 42 virtual ~ControllerApplet();
43 43
diff --git a/src/core/hle/service/am/applets/applet_controller.cpp b/src/core/hle/service/am/applets/applet_controller.cpp
index 2d1d115d7..9840d2547 100644
--- a/src/core/hle/service/am/applets/applet_controller.cpp
+++ b/src/core/hle/service/am/applets/applet_controller.cpp
@@ -224,7 +224,8 @@ void Controller::Execute() {
224 parameters.allow_dual_joycons, parameters.allow_left_joycon, 224 parameters.allow_dual_joycons, parameters.allow_left_joycon,
225 parameters.allow_right_joycon); 225 parameters.allow_right_joycon);
226 226
227 frontend.ReconfigureControllers([this] { ConfigurationComplete(); }, parameters); 227 frontend.ReconfigureControllers(
228 [this](bool is_success) { ConfigurationComplete(is_success); }, parameters);
228 break; 229 break;
229 } 230 }
230 case ControllerSupportMode::ShowControllerStrapGuide: 231 case ControllerSupportMode::ShowControllerStrapGuide:
@@ -232,16 +233,16 @@ void Controller::Execute() {
232 case ControllerSupportMode::ShowControllerKeyRemappingForSystem: 233 case ControllerSupportMode::ShowControllerKeyRemappingForSystem:
233 UNIMPLEMENTED_MSG("ControllerSupportMode={} is not implemented", 234 UNIMPLEMENTED_MSG("ControllerSupportMode={} is not implemented",
234 controller_private_arg.mode); 235 controller_private_arg.mode);
235 ConfigurationComplete(); 236 ConfigurationComplete(true);
236 break; 237 break;
237 default: { 238 default: {
238 ConfigurationComplete(); 239 ConfigurationComplete(true);
239 break; 240 break;
240 } 241 }
241 } 242 }
242} 243}
243 244
244void Controller::ConfigurationComplete() { 245void Controller::ConfigurationComplete(bool is_success) {
245 ControllerSupportResultInfo result_info{}; 246 ControllerSupportResultInfo result_info{};
246 247
247 // If enable_single_mode is enabled, player_count is 1 regardless of any other parameters. 248 // If enable_single_mode is enabled, player_count is 1 regardless of any other parameters.
@@ -250,7 +251,8 @@ void Controller::ConfigurationComplete() {
250 251
251 result_info.selected_id = static_cast<u32>(system.HIDCore().GetFirstNpadId()); 252 result_info.selected_id = static_cast<u32>(system.HIDCore().GetFirstNpadId());
252 253
253 result_info.result = 0; 254 result_info.result =
255 is_success ? ControllerSupportResult::Success : ControllerSupportResult::Cancel;
254 256
255 LOG_DEBUG(Service_HID, "Result Info: player_count={}, selected_id={}, result={}", 257 LOG_DEBUG(Service_HID, "Result Info: player_count={}, selected_id={}, result={}",
256 result_info.player_count, result_info.selected_id, result_info.result); 258 result_info.player_count, result_info.selected_id, result_info.result);
diff --git a/src/core/hle/service/am/applets/applet_controller.h b/src/core/hle/service/am/applets/applet_controller.h
index 1fbabee11..f6c64f633 100644
--- a/src/core/hle/service/am/applets/applet_controller.h
+++ b/src/core/hle/service/am/applets/applet_controller.h
@@ -48,6 +48,11 @@ enum class ControllerSupportCaller : u8 {
48 MaxControllerSupportCaller, 48 MaxControllerSupportCaller,
49}; 49};
50 50
51enum class ControllerSupportResult : u32 {
52 Success = 0,
53 Cancel = 2,
54};
55
51struct ControllerSupportArgPrivate { 56struct ControllerSupportArgPrivate {
52 u32 arg_private_size{}; 57 u32 arg_private_size{};
53 u32 arg_size{}; 58 u32 arg_size{};
@@ -112,7 +117,7 @@ struct ControllerSupportResultInfo {
112 s8 player_count{}; 117 s8 player_count{};
113 INSERT_PADDING_BYTES(3); 118 INSERT_PADDING_BYTES(3);
114 u32 selected_id{}; 119 u32 selected_id{};
115 u32 result{}; 120 ControllerSupportResult result{};
116}; 121};
117static_assert(sizeof(ControllerSupportResultInfo) == 0xC, 122static_assert(sizeof(ControllerSupportResultInfo) == 0xC,
118 "ControllerSupportResultInfo has incorrect size."); 123 "ControllerSupportResultInfo has incorrect size.");
@@ -131,7 +136,7 @@ public:
131 void Execute() override; 136 void Execute() override;
132 Result RequestExit() override; 137 Result RequestExit() override;
133 138
134 void ConfigurationComplete(); 139 void ConfigurationComplete(bool is_success);
135 140
136private: 141private:
137 const Core::Frontend::ControllerApplet& frontend; 142 const Core::Frontend::ControllerApplet& frontend;
diff --git a/src/yuzu/applets/qt_controller.cpp b/src/yuzu/applets/qt_controller.cpp
index 79018a7f6..00aafb8f8 100644
--- a/src/yuzu/applets/qt_controller.cpp
+++ b/src/yuzu/applets/qt_controller.cpp
@@ -300,7 +300,7 @@ bool QtControllerSelectorDialog::CheckIfParametersMet() {
300 if (num_connected_players < min_supported_players || 300 if (num_connected_players < min_supported_players ||
301 num_connected_players > max_supported_players) { 301 num_connected_players > max_supported_players) {
302 parameters_met = false; 302 parameters_met = false;
303 ui->buttonBox->setEnabled(parameters_met); 303 ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(parameters_met);
304 return parameters_met; 304 return parameters_met;
305 } 305 }
306 306
@@ -327,7 +327,7 @@ bool QtControllerSelectorDialog::CheckIfParametersMet() {
327 }(); 327 }();
328 328
329 parameters_met = all_controllers_compatible; 329 parameters_met = all_controllers_compatible;
330 ui->buttonBox->setEnabled(parameters_met); 330 ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(parameters_met);
331 return parameters_met; 331 return parameters_met;
332} 332}
333 333
@@ -697,8 +697,8 @@ void QtControllerSelector::ReconfigureControllers(
697 emit MainWindowReconfigureControllers(parameters); 697 emit MainWindowReconfigureControllers(parameters);
698} 698}
699 699
700void QtControllerSelector::MainWindowReconfigureFinished() { 700void QtControllerSelector::MainWindowReconfigureFinished(bool is_success) {
701 if (callback) { 701 if (callback) {
702 callback(); 702 callback(is_success);
703 } 703 }
704} 704}
diff --git a/src/yuzu/applets/qt_controller.h b/src/yuzu/applets/qt_controller.h
index 2ef7e488f..2fdc35857 100644
--- a/src/yuzu/applets/qt_controller.h
+++ b/src/yuzu/applets/qt_controller.h
@@ -167,7 +167,7 @@ signals:
167 void MainWindowRequestExit() const; 167 void MainWindowRequestExit() const;
168 168
169private: 169private:
170 void MainWindowReconfigureFinished(); 170 void MainWindowReconfigureFinished(bool is_success);
171 171
172 mutable ReconfigureCallback callback; 172 mutable ReconfigureCallback callback;
173}; 173};
diff --git a/src/yuzu/applets/qt_controller.ui b/src/yuzu/applets/qt_controller.ui
index f5eccba70..729e921ee 100644
--- a/src/yuzu/applets/qt_controller.ui
+++ b/src/yuzu/applets/qt_controller.ui
@@ -2629,7 +2629,7 @@
2629 <bool>true</bool> 2629 <bool>true</bool>
2630 </property> 2630 </property>
2631 <property name="standardButtons"> 2631 <property name="standardButtons">
2632 <set>QDialogButtonBox::Ok</set> 2632 <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
2633 </property> 2633 </property>
2634 </widget> 2634 </widget>
2635 </item> 2635 </item>
@@ -2649,5 +2649,11 @@
2649 <receiver>QtControllerSelectorDialog</receiver> 2649 <receiver>QtControllerSelectorDialog</receiver>
2650 <slot>accept()</slot> 2650 <slot>accept()</slot>
2651 </connection> 2651 </connection>
2652 <connection>
2653 <sender>buttonBox</sender>
2654 <signal>rejected()</signal>
2655 <receiver>QtControllerSelectorDialog</receiver>
2656 <slot>reject()</slot>
2657 </connection>
2652 </connections> 2658 </connections>
2653</ui> 2659</ui>
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index 0c60a90cb..2ebfef551 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -634,15 +634,16 @@ void GMainWindow::ControllerSelectorReconfigureControllers(
634 Qt::WindowStaysOnTopHint | Qt::WindowTitleHint | 634 Qt::WindowStaysOnTopHint | Qt::WindowTitleHint |
635 Qt::WindowSystemMenuHint); 635 Qt::WindowSystemMenuHint);
636 controller_applet->setWindowModality(Qt::WindowModal); 636 controller_applet->setWindowModality(Qt::WindowModal);
637 controller_applet->exec(); 637 bool is_success = controller_applet->exec() != QDialog::Rejected;
638
639 emit ControllerSelectorReconfigureFinished();
640 638
641 // Don't forget to apply settings. 639 // Don't forget to apply settings.
640 system->HIDCore().DisableAllControllerConfiguration();
642 system->ApplySettings(); 641 system->ApplySettings();
643 config->Save(); 642 config->Save();
644 643
645 UpdateStatusButtons(); 644 UpdateStatusButtons();
645
646 emit ControllerSelectorReconfigureFinished(is_success);
646} 647}
647 648
648void GMainWindow::ControllerSelectorRequestExit() { 649void GMainWindow::ControllerSelectorRequestExit() {
diff --git a/src/yuzu/main.h b/src/yuzu/main.h
index a99938eaa..58a65bd33 100644
--- a/src/yuzu/main.h
+++ b/src/yuzu/main.h
@@ -165,7 +165,7 @@ signals:
165 165
166 void AmiiboSettingsFinished(bool is_success, const std::string& name); 166 void AmiiboSettingsFinished(bool is_success, const std::string& name);
167 167
168 void ControllerSelectorReconfigureFinished(); 168 void ControllerSelectorReconfigureFinished(bool is_success);
169 169
170 void ErrorDisplayFinished(); 170 void ErrorDisplayFinished();
171 171