diff options
Diffstat (limited to 'src/core/hid/emulated_controller.cpp')
| -rw-r--r-- | src/core/hid/emulated_controller.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/core/hid/emulated_controller.cpp b/src/core/hid/emulated_controller.cpp index c937495f9..1ebc32c1e 100644 --- a/src/core/hid/emulated_controller.cpp +++ b/src/core/hid/emulated_controller.cpp | |||
| @@ -1250,6 +1250,11 @@ Common::Input::DriverResult EmulatedController::SetPollingMode( | |||
| 1250 | const auto virtual_nfc_result = nfc_output_device->SetPollingMode(polling_mode); | 1250 | const auto virtual_nfc_result = nfc_output_device->SetPollingMode(polling_mode); |
| 1251 | const auto mapped_nfc_result = right_output_device->SetPollingMode(polling_mode); | 1251 | const auto mapped_nfc_result = right_output_device->SetPollingMode(polling_mode); |
| 1252 | 1252 | ||
| 1253 | // Restore previous state | ||
| 1254 | if (mapped_nfc_result != Common::Input::DriverResult::Success) { | ||
| 1255 | right_output_device->SetPollingMode(Common::Input::PollingMode::Active); | ||
| 1256 | } | ||
| 1257 | |||
| 1253 | if (virtual_nfc_result == Common::Input::DriverResult::Success) { | 1258 | if (virtual_nfc_result == Common::Input::DriverResult::Success) { |
| 1254 | return virtual_nfc_result; | 1259 | return virtual_nfc_result; |
| 1255 | } | 1260 | } |
| @@ -1329,16 +1334,22 @@ bool EmulatedController::StartNfcPolling() { | |||
| 1329 | auto& nfc_output_device = output_devices[static_cast<std::size_t>(DeviceIndex::Right)]; | 1334 | auto& nfc_output_device = output_devices[static_cast<std::size_t>(DeviceIndex::Right)]; |
| 1330 | auto& nfc_virtual_output_device = output_devices[3]; | 1335 | auto& nfc_virtual_output_device = output_devices[3]; |
| 1331 | 1336 | ||
| 1332 | return nfc_output_device->StartNfcPolling() == Common::Input::NfcState::Success || | 1337 | const auto device_result = nfc_output_device->StartNfcPolling(); |
| 1333 | nfc_virtual_output_device->StartNfcPolling() == Common::Input::NfcState::Success; | 1338 | const auto virtual_device_result = nfc_virtual_output_device->StartNfcPolling(); |
| 1339 | |||
| 1340 | return device_result == Common::Input::NfcState::Success || | ||
| 1341 | virtual_device_result == Common::Input::NfcState::Success; | ||
| 1334 | } | 1342 | } |
| 1335 | 1343 | ||
| 1336 | bool EmulatedController::StopNfcPolling() { | 1344 | bool EmulatedController::StopNfcPolling() { |
| 1337 | auto& nfc_output_device = output_devices[static_cast<std::size_t>(DeviceIndex::Right)]; | 1345 | auto& nfc_output_device = output_devices[static_cast<std::size_t>(DeviceIndex::Right)]; |
| 1338 | auto& nfc_virtual_output_device = output_devices[3]; | 1346 | auto& nfc_virtual_output_device = output_devices[3]; |
| 1339 | 1347 | ||
| 1340 | return nfc_output_device->StopNfcPolling() == Common::Input::NfcState::Success || | 1348 | const auto device_result = nfc_output_device->StopNfcPolling(); |
| 1341 | nfc_virtual_output_device->StopNfcPolling() == Common::Input::NfcState::Success; | 1349 | const auto virtual_device_result = nfc_virtual_output_device->StopNfcPolling(); |
| 1350 | |||
| 1351 | return device_result == Common::Input::NfcState::Success || | ||
| 1352 | virtual_device_result == Common::Input::NfcState::Success; | ||
| 1342 | } | 1353 | } |
| 1343 | 1354 | ||
| 1344 | bool EmulatedController::ReadAmiiboData(std::vector<u8>& data) { | 1355 | bool EmulatedController::ReadAmiiboData(std::vector<u8>& data) { |