diff options
Diffstat (limited to '')
| -rw-r--r-- | src/core/hid/emulated_console.cpp | 14 | ||||
| -rw-r--r-- | src/core/hid/emulated_controller.cpp | 52 | ||||
| -rw-r--r-- | src/core/hid/emulated_devices.cpp | 22 |
3 files changed, 44 insertions, 44 deletions
diff --git a/src/core/hid/emulated_console.cpp b/src/core/hid/emulated_console.cpp index 639f61809..de565048b 100644 --- a/src/core/hid/emulated_console.cpp +++ b/src/core/hid/emulated_console.cpp | |||
| @@ -197,27 +197,27 @@ void EmulatedConsole::SetTouch(const Common::Input::CallbackStatus& callback, st | |||
| 197 | } | 197 | } |
| 198 | 198 | ||
| 199 | ConsoleMotionValues EmulatedConsole::GetMotionValues() const { | 199 | ConsoleMotionValues EmulatedConsole::GetMotionValues() const { |
| 200 | std::lock_guard lock{mutex}; | 200 | std::scoped_lock lock{mutex}; |
| 201 | return console.motion_values; | 201 | return console.motion_values; |
| 202 | } | 202 | } |
| 203 | 203 | ||
| 204 | TouchValues EmulatedConsole::GetTouchValues() const { | 204 | TouchValues EmulatedConsole::GetTouchValues() const { |
| 205 | std::lock_guard lock{mutex}; | 205 | std::scoped_lock lock{mutex}; |
| 206 | return console.touch_values; | 206 | return console.touch_values; |
| 207 | } | 207 | } |
| 208 | 208 | ||
| 209 | ConsoleMotion EmulatedConsole::GetMotion() const { | 209 | ConsoleMotion EmulatedConsole::GetMotion() const { |
| 210 | std::lock_guard lock{mutex}; | 210 | std::scoped_lock lock{mutex}; |
| 211 | return console.motion_state; | 211 | return console.motion_state; |
| 212 | } | 212 | } |
| 213 | 213 | ||
| 214 | TouchFingerState EmulatedConsole::GetTouch() const { | 214 | TouchFingerState EmulatedConsole::GetTouch() const { |
| 215 | std::lock_guard lock{mutex}; | 215 | std::scoped_lock lock{mutex}; |
| 216 | return console.touch_state; | 216 | return console.touch_state; |
| 217 | } | 217 | } |
| 218 | 218 | ||
| 219 | void EmulatedConsole::TriggerOnChange(ConsoleTriggerType type) { | 219 | void EmulatedConsole::TriggerOnChange(ConsoleTriggerType type) { |
| 220 | std::lock_guard lock{callback_mutex}; | 220 | std::scoped_lock lock{callback_mutex}; |
| 221 | for (const auto& poller_pair : callback_list) { | 221 | for (const auto& poller_pair : callback_list) { |
| 222 | const ConsoleUpdateCallback& poller = poller_pair.second; | 222 | const ConsoleUpdateCallback& poller = poller_pair.second; |
| 223 | if (poller.on_change) { | 223 | if (poller.on_change) { |
| @@ -227,13 +227,13 @@ void EmulatedConsole::TriggerOnChange(ConsoleTriggerType type) { | |||
| 227 | } | 227 | } |
| 228 | 228 | ||
| 229 | int EmulatedConsole::SetCallback(ConsoleUpdateCallback update_callback) { | 229 | int EmulatedConsole::SetCallback(ConsoleUpdateCallback update_callback) { |
| 230 | std::lock_guard lock{callback_mutex}; | 230 | std::scoped_lock lock{callback_mutex}; |
| 231 | callback_list.insert_or_assign(last_callback_key, update_callback); | 231 | callback_list.insert_or_assign(last_callback_key, update_callback); |
| 232 | return last_callback_key++; | 232 | return last_callback_key++; |
| 233 | } | 233 | } |
| 234 | 234 | ||
| 235 | void EmulatedConsole::DeleteCallback(int key) { | 235 | void EmulatedConsole::DeleteCallback(int key) { |
| 236 | std::lock_guard lock{callback_mutex}; | 236 | std::scoped_lock lock{callback_mutex}; |
| 237 | const auto& iterator = callback_list.find(key); | 237 | const auto& iterator = callback_list.find(key); |
| 238 | if (iterator == callback_list.end()) { | 238 | if (iterator == callback_list.end()) { |
| 239 | LOG_ERROR(Input, "Tried to delete non-existent callback {}", key); | 239 | LOG_ERROR(Input, "Tried to delete non-existent callback {}", key); |
diff --git a/src/core/hid/emulated_controller.cpp b/src/core/hid/emulated_controller.cpp index 4f3676ec3..d3b13dbbd 100644 --- a/src/core/hid/emulated_controller.cpp +++ b/src/core/hid/emulated_controller.cpp | |||
| @@ -353,17 +353,17 @@ void EmulatedController::DisableConfiguration() { | |||
| 353 | } | 353 | } |
| 354 | 354 | ||
| 355 | void EmulatedController::EnableSystemButtons() { | 355 | void EmulatedController::EnableSystemButtons() { |
| 356 | std::lock_guard lock{mutex}; | 356 | std::scoped_lock lock{mutex}; |
| 357 | system_buttons_enabled = true; | 357 | system_buttons_enabled = true; |
| 358 | } | 358 | } |
| 359 | 359 | ||
| 360 | void EmulatedController::DisableSystemButtons() { | 360 | void EmulatedController::DisableSystemButtons() { |
| 361 | std::lock_guard lock{mutex}; | 361 | std::scoped_lock lock{mutex}; |
| 362 | system_buttons_enabled = false; | 362 | system_buttons_enabled = false; |
| 363 | } | 363 | } |
| 364 | 364 | ||
| 365 | void EmulatedController::ResetSystemButtons() { | 365 | void EmulatedController::ResetSystemButtons() { |
| 366 | std::lock_guard lock{mutex}; | 366 | std::scoped_lock lock{mutex}; |
| 367 | controller.home_button_state.home.Assign(false); | 367 | controller.home_button_state.home.Assign(false); |
| 368 | controller.capture_button_state.capture.Assign(false); | 368 | controller.capture_button_state.capture.Assign(false); |
| 369 | } | 369 | } |
| @@ -946,7 +946,7 @@ void EmulatedController::SetSupportedNpadStyleTag(NpadStyleTag supported_styles) | |||
| 946 | } | 946 | } |
| 947 | 947 | ||
| 948 | bool EmulatedController::IsControllerFullkey(bool use_temporary_value) const { | 948 | bool EmulatedController::IsControllerFullkey(bool use_temporary_value) const { |
| 949 | std::lock_guard lock{mutex}; | 949 | std::scoped_lock lock{mutex}; |
| 950 | const auto type = is_configuring && use_temporary_value ? tmp_npad_type : npad_type; | 950 | const auto type = is_configuring && use_temporary_value ? tmp_npad_type : npad_type; |
| 951 | switch (type) { | 951 | switch (type) { |
| 952 | case NpadStyleIndex::ProController: | 952 | case NpadStyleIndex::ProController: |
| @@ -962,7 +962,7 @@ bool EmulatedController::IsControllerFullkey(bool use_temporary_value) const { | |||
| 962 | } | 962 | } |
| 963 | 963 | ||
| 964 | bool EmulatedController::IsControllerSupported(bool use_temporary_value) const { | 964 | bool EmulatedController::IsControllerSupported(bool use_temporary_value) const { |
| 965 | std::lock_guard lock{mutex}; | 965 | std::scoped_lock lock{mutex}; |
| 966 | const auto type = is_configuring && use_temporary_value ? tmp_npad_type : npad_type; | 966 | const auto type = is_configuring && use_temporary_value ? tmp_npad_type : npad_type; |
| 967 | switch (type) { | 967 | switch (type) { |
| 968 | case NpadStyleIndex::ProController: | 968 | case NpadStyleIndex::ProController: |
| @@ -1035,7 +1035,7 @@ void EmulatedController::Disconnect() { | |||
| 1035 | } | 1035 | } |
| 1036 | 1036 | ||
| 1037 | bool EmulatedController::IsConnected(bool get_temporary_value) const { | 1037 | bool EmulatedController::IsConnected(bool get_temporary_value) const { |
| 1038 | std::lock_guard lock{mutex}; | 1038 | std::scoped_lock lock{mutex}; |
| 1039 | if (get_temporary_value && is_configuring) { | 1039 | if (get_temporary_value && is_configuring) { |
| 1040 | return tmp_is_connected; | 1040 | return tmp_is_connected; |
| 1041 | } | 1041 | } |
| @@ -1049,12 +1049,12 @@ bool EmulatedController::IsVibrationEnabled() const { | |||
| 1049 | } | 1049 | } |
| 1050 | 1050 | ||
| 1051 | NpadIdType EmulatedController::GetNpadIdType() const { | 1051 | NpadIdType EmulatedController::GetNpadIdType() const { |
| 1052 | std::lock_guard lock{mutex}; | 1052 | std::scoped_lock lock{mutex}; |
| 1053 | return npad_id_type; | 1053 | return npad_id_type; |
| 1054 | } | 1054 | } |
| 1055 | 1055 | ||
| 1056 | NpadStyleIndex EmulatedController::GetNpadStyleIndex(bool get_temporary_value) const { | 1056 | NpadStyleIndex EmulatedController::GetNpadStyleIndex(bool get_temporary_value) const { |
| 1057 | std::lock_guard lock{mutex}; | 1057 | std::scoped_lock lock{mutex}; |
| 1058 | if (get_temporary_value && is_configuring) { | 1058 | if (get_temporary_value && is_configuring) { |
| 1059 | return tmp_npad_type; | 1059 | return tmp_npad_type; |
| 1060 | } | 1060 | } |
| @@ -1111,37 +1111,37 @@ LedPattern EmulatedController::GetLedPattern() const { | |||
| 1111 | } | 1111 | } |
| 1112 | 1112 | ||
| 1113 | ButtonValues EmulatedController::GetButtonsValues() const { | 1113 | ButtonValues EmulatedController::GetButtonsValues() const { |
| 1114 | std::lock_guard lock{mutex}; | 1114 | std::scoped_lock lock{mutex}; |
| 1115 | return controller.button_values; | 1115 | return controller.button_values; |
| 1116 | } | 1116 | } |
| 1117 | 1117 | ||
| 1118 | SticksValues EmulatedController::GetSticksValues() const { | 1118 | SticksValues EmulatedController::GetSticksValues() const { |
| 1119 | std::lock_guard lock{mutex}; | 1119 | std::scoped_lock lock{mutex}; |
| 1120 | return controller.stick_values; | 1120 | return controller.stick_values; |
| 1121 | } | 1121 | } |
| 1122 | 1122 | ||
| 1123 | TriggerValues EmulatedController::GetTriggersValues() const { | 1123 | TriggerValues EmulatedController::GetTriggersValues() const { |
| 1124 | std::lock_guard lock{mutex}; | 1124 | std::scoped_lock lock{mutex}; |
| 1125 | return controller.trigger_values; | 1125 | return controller.trigger_values; |
| 1126 | } | 1126 | } |
| 1127 | 1127 | ||
| 1128 | ControllerMotionValues EmulatedController::GetMotionValues() const { | 1128 | ControllerMotionValues EmulatedController::GetMotionValues() const { |
| 1129 | std::lock_guard lock{mutex}; | 1129 | std::scoped_lock lock{mutex}; |
| 1130 | return controller.motion_values; | 1130 | return controller.motion_values; |
| 1131 | } | 1131 | } |
| 1132 | 1132 | ||
| 1133 | ColorValues EmulatedController::GetColorsValues() const { | 1133 | ColorValues EmulatedController::GetColorsValues() const { |
| 1134 | std::lock_guard lock{mutex}; | 1134 | std::scoped_lock lock{mutex}; |
| 1135 | return controller.color_values; | 1135 | return controller.color_values; |
| 1136 | } | 1136 | } |
| 1137 | 1137 | ||
| 1138 | BatteryValues EmulatedController::GetBatteryValues() const { | 1138 | BatteryValues EmulatedController::GetBatteryValues() const { |
| 1139 | std::lock_guard lock{mutex}; | 1139 | std::scoped_lock lock{mutex}; |
| 1140 | return controller.battery_values; | 1140 | return controller.battery_values; |
| 1141 | } | 1141 | } |
| 1142 | 1142 | ||
| 1143 | HomeButtonState EmulatedController::GetHomeButtons() const { | 1143 | HomeButtonState EmulatedController::GetHomeButtons() const { |
| 1144 | std::lock_guard lock{mutex}; | 1144 | std::scoped_lock lock{mutex}; |
| 1145 | if (is_configuring) { | 1145 | if (is_configuring) { |
| 1146 | return {}; | 1146 | return {}; |
| 1147 | } | 1147 | } |
| @@ -1149,7 +1149,7 @@ HomeButtonState EmulatedController::GetHomeButtons() const { | |||
| 1149 | } | 1149 | } |
| 1150 | 1150 | ||
| 1151 | CaptureButtonState EmulatedController::GetCaptureButtons() const { | 1151 | CaptureButtonState EmulatedController::GetCaptureButtons() const { |
| 1152 | std::lock_guard lock{mutex}; | 1152 | std::scoped_lock lock{mutex}; |
| 1153 | if (is_configuring) { | 1153 | if (is_configuring) { |
| 1154 | return {}; | 1154 | return {}; |
| 1155 | } | 1155 | } |
| @@ -1157,7 +1157,7 @@ CaptureButtonState EmulatedController::GetCaptureButtons() const { | |||
| 1157 | } | 1157 | } |
| 1158 | 1158 | ||
| 1159 | NpadButtonState EmulatedController::GetNpadButtons() const { | 1159 | NpadButtonState EmulatedController::GetNpadButtons() const { |
| 1160 | std::lock_guard lock{mutex}; | 1160 | std::scoped_lock lock{mutex}; |
| 1161 | if (is_configuring) { | 1161 | if (is_configuring) { |
| 1162 | return {}; | 1162 | return {}; |
| 1163 | } | 1163 | } |
| @@ -1165,7 +1165,7 @@ NpadButtonState EmulatedController::GetNpadButtons() const { | |||
| 1165 | } | 1165 | } |
| 1166 | 1166 | ||
| 1167 | DebugPadButton EmulatedController::GetDebugPadButtons() const { | 1167 | DebugPadButton EmulatedController::GetDebugPadButtons() const { |
| 1168 | std::lock_guard lock{mutex}; | 1168 | std::scoped_lock lock{mutex}; |
| 1169 | if (is_configuring) { | 1169 | if (is_configuring) { |
| 1170 | return {}; | 1170 | return {}; |
| 1171 | } | 1171 | } |
| @@ -1173,7 +1173,7 @@ DebugPadButton EmulatedController::GetDebugPadButtons() const { | |||
| 1173 | } | 1173 | } |
| 1174 | 1174 | ||
| 1175 | AnalogSticks EmulatedController::GetSticks() const { | 1175 | AnalogSticks EmulatedController::GetSticks() const { |
| 1176 | std::lock_guard lock{mutex}; | 1176 | std::scoped_lock lock{mutex}; |
| 1177 | if (is_configuring) { | 1177 | if (is_configuring) { |
| 1178 | return {}; | 1178 | return {}; |
| 1179 | } | 1179 | } |
| @@ -1188,7 +1188,7 @@ AnalogSticks EmulatedController::GetSticks() const { | |||
| 1188 | } | 1188 | } |
| 1189 | 1189 | ||
| 1190 | NpadGcTriggerState EmulatedController::GetTriggers() const { | 1190 | NpadGcTriggerState EmulatedController::GetTriggers() const { |
| 1191 | std::lock_guard lock{mutex}; | 1191 | std::scoped_lock lock{mutex}; |
| 1192 | if (is_configuring) { | 1192 | if (is_configuring) { |
| 1193 | return {}; | 1193 | return {}; |
| 1194 | } | 1194 | } |
| @@ -1196,7 +1196,7 @@ NpadGcTriggerState EmulatedController::GetTriggers() const { | |||
| 1196 | } | 1196 | } |
| 1197 | 1197 | ||
| 1198 | MotionState EmulatedController::GetMotions() const { | 1198 | MotionState EmulatedController::GetMotions() const { |
| 1199 | std::lock_guard lock{mutex}; | 1199 | std::scoped_lock lock{mutex}; |
| 1200 | if (force_update_motion) { | 1200 | if (force_update_motion) { |
| 1201 | for (auto& device : motion_devices) { | 1201 | for (auto& device : motion_devices) { |
| 1202 | if (!device) { | 1202 | if (!device) { |
| @@ -1209,17 +1209,17 @@ MotionState EmulatedController::GetMotions() const { | |||
| 1209 | } | 1209 | } |
| 1210 | 1210 | ||
| 1211 | ControllerColors EmulatedController::GetColors() const { | 1211 | ControllerColors EmulatedController::GetColors() const { |
| 1212 | std::lock_guard lock{mutex}; | 1212 | std::scoped_lock lock{mutex}; |
| 1213 | return controller.colors_state; | 1213 | return controller.colors_state; |
| 1214 | } | 1214 | } |
| 1215 | 1215 | ||
| 1216 | BatteryLevelState EmulatedController::GetBattery() const { | 1216 | BatteryLevelState EmulatedController::GetBattery() const { |
| 1217 | std::lock_guard lock{mutex}; | 1217 | std::scoped_lock lock{mutex}; |
| 1218 | return controller.battery_state; | 1218 | return controller.battery_state; |
| 1219 | } | 1219 | } |
| 1220 | 1220 | ||
| 1221 | void EmulatedController::TriggerOnChange(ControllerTriggerType type, bool is_npad_service_update) { | 1221 | void EmulatedController::TriggerOnChange(ControllerTriggerType type, bool is_npad_service_update) { |
| 1222 | std::lock_guard lock{callback_mutex}; | 1222 | std::scoped_lock lock{callback_mutex}; |
| 1223 | for (const auto& poller_pair : callback_list) { | 1223 | for (const auto& poller_pair : callback_list) { |
| 1224 | const ControllerUpdateCallback& poller = poller_pair.second; | 1224 | const ControllerUpdateCallback& poller = poller_pair.second; |
| 1225 | if (!is_npad_service_update && poller.is_npad_service) { | 1225 | if (!is_npad_service_update && poller.is_npad_service) { |
| @@ -1232,13 +1232,13 @@ void EmulatedController::TriggerOnChange(ControllerTriggerType type, bool is_npa | |||
| 1232 | } | 1232 | } |
| 1233 | 1233 | ||
| 1234 | int EmulatedController::SetCallback(ControllerUpdateCallback update_callback) { | 1234 | int EmulatedController::SetCallback(ControllerUpdateCallback update_callback) { |
| 1235 | std::lock_guard lock{callback_mutex}; | 1235 | std::scoped_lock lock{callback_mutex}; |
| 1236 | callback_list.insert_or_assign(last_callback_key, std::move(update_callback)); | 1236 | callback_list.insert_or_assign(last_callback_key, std::move(update_callback)); |
| 1237 | return last_callback_key++; | 1237 | return last_callback_key++; |
| 1238 | } | 1238 | } |
| 1239 | 1239 | ||
| 1240 | void EmulatedController::DeleteCallback(int key) { | 1240 | void EmulatedController::DeleteCallback(int key) { |
| 1241 | std::lock_guard lock{callback_mutex}; | 1241 | std::scoped_lock lock{callback_mutex}; |
| 1242 | const auto& iterator = callback_list.find(key); | 1242 | const auto& iterator = callback_list.find(key); |
| 1243 | if (iterator == callback_list.end()) { | 1243 | if (iterator == callback_list.end()) { |
| 1244 | LOG_ERROR(Input, "Tried to delete non-existent callback {}", key); | 1244 | LOG_ERROR(Input, "Tried to delete non-existent callback {}", key); |
diff --git a/src/core/hid/emulated_devices.cpp b/src/core/hid/emulated_devices.cpp index f899f8ac0..cc0dcd931 100644 --- a/src/core/hid/emulated_devices.cpp +++ b/src/core/hid/emulated_devices.cpp | |||
| @@ -411,47 +411,47 @@ void EmulatedDevices::SetMouseStick(const Common::Input::CallbackStatus& callbac | |||
| 411 | } | 411 | } |
| 412 | 412 | ||
| 413 | KeyboardValues EmulatedDevices::GetKeyboardValues() const { | 413 | KeyboardValues EmulatedDevices::GetKeyboardValues() const { |
| 414 | std::lock_guard lock{mutex}; | 414 | std::scoped_lock lock{mutex}; |
| 415 | return device_status.keyboard_values; | 415 | return device_status.keyboard_values; |
| 416 | } | 416 | } |
| 417 | 417 | ||
| 418 | KeyboardModifierValues EmulatedDevices::GetKeyboardModdifierValues() const { | 418 | KeyboardModifierValues EmulatedDevices::GetKeyboardModdifierValues() const { |
| 419 | std::lock_guard lock{mutex}; | 419 | std::scoped_lock lock{mutex}; |
| 420 | return device_status.keyboard_moddifier_values; | 420 | return device_status.keyboard_moddifier_values; |
| 421 | } | 421 | } |
| 422 | 422 | ||
| 423 | MouseButtonValues EmulatedDevices::GetMouseButtonsValues() const { | 423 | MouseButtonValues EmulatedDevices::GetMouseButtonsValues() const { |
| 424 | std::lock_guard lock{mutex}; | 424 | std::scoped_lock lock{mutex}; |
| 425 | return device_status.mouse_button_values; | 425 | return device_status.mouse_button_values; |
| 426 | } | 426 | } |
| 427 | 427 | ||
| 428 | KeyboardKey EmulatedDevices::GetKeyboard() const { | 428 | KeyboardKey EmulatedDevices::GetKeyboard() const { |
| 429 | std::lock_guard lock{mutex}; | 429 | std::scoped_lock lock{mutex}; |
| 430 | return device_status.keyboard_state; | 430 | return device_status.keyboard_state; |
| 431 | } | 431 | } |
| 432 | 432 | ||
| 433 | KeyboardModifier EmulatedDevices::GetKeyboardModifier() const { | 433 | KeyboardModifier EmulatedDevices::GetKeyboardModifier() const { |
| 434 | std::lock_guard lock{mutex}; | 434 | std::scoped_lock lock{mutex}; |
| 435 | return device_status.keyboard_moddifier_state; | 435 | return device_status.keyboard_moddifier_state; |
| 436 | } | 436 | } |
| 437 | 437 | ||
| 438 | MouseButton EmulatedDevices::GetMouseButtons() const { | 438 | MouseButton EmulatedDevices::GetMouseButtons() const { |
| 439 | std::lock_guard lock{mutex}; | 439 | std::scoped_lock lock{mutex}; |
| 440 | return device_status.mouse_button_state; | 440 | return device_status.mouse_button_state; |
| 441 | } | 441 | } |
| 442 | 442 | ||
| 443 | MousePosition EmulatedDevices::GetMousePosition() const { | 443 | MousePosition EmulatedDevices::GetMousePosition() const { |
| 444 | std::lock_guard lock{mutex}; | 444 | std::scoped_lock lock{mutex}; |
| 445 | return device_status.mouse_position_state; | 445 | return device_status.mouse_position_state; |
| 446 | } | 446 | } |
| 447 | 447 | ||
| 448 | AnalogStickState EmulatedDevices::GetMouseWheel() const { | 448 | AnalogStickState EmulatedDevices::GetMouseWheel() const { |
| 449 | std::lock_guard lock{mutex}; | 449 | std::scoped_lock lock{mutex}; |
| 450 | return device_status.mouse_wheel_state; | 450 | return device_status.mouse_wheel_state; |
| 451 | } | 451 | } |
| 452 | 452 | ||
| 453 | void EmulatedDevices::TriggerOnChange(DeviceTriggerType type) { | 453 | void EmulatedDevices::TriggerOnChange(DeviceTriggerType type) { |
| 454 | std::lock_guard lock{callback_mutex}; | 454 | std::scoped_lock lock{callback_mutex}; |
| 455 | for (const auto& poller_pair : callback_list) { | 455 | for (const auto& poller_pair : callback_list) { |
| 456 | const InterfaceUpdateCallback& poller = poller_pair.second; | 456 | const InterfaceUpdateCallback& poller = poller_pair.second; |
| 457 | if (poller.on_change) { | 457 | if (poller.on_change) { |
| @@ -461,13 +461,13 @@ void EmulatedDevices::TriggerOnChange(DeviceTriggerType type) { | |||
| 461 | } | 461 | } |
| 462 | 462 | ||
| 463 | int EmulatedDevices::SetCallback(InterfaceUpdateCallback update_callback) { | 463 | int EmulatedDevices::SetCallback(InterfaceUpdateCallback update_callback) { |
| 464 | std::lock_guard lock{callback_mutex}; | 464 | std::scoped_lock lock{callback_mutex}; |
| 465 | callback_list.insert_or_assign(last_callback_key, std::move(update_callback)); | 465 | callback_list.insert_or_assign(last_callback_key, std::move(update_callback)); |
| 466 | return last_callback_key++; | 466 | return last_callback_key++; |
| 467 | } | 467 | } |
| 468 | 468 | ||
| 469 | void EmulatedDevices::DeleteCallback(int key) { | 469 | void EmulatedDevices::DeleteCallback(int key) { |
| 470 | std::lock_guard lock{callback_mutex}; | 470 | std::scoped_lock lock{callback_mutex}; |
| 471 | const auto& iterator = callback_list.find(key); | 471 | const auto& iterator = callback_list.find(key); |
| 472 | if (iterator == callback_list.end()) { | 472 | if (iterator == callback_list.end()) { |
| 473 | LOG_ERROR(Input, "Tried to delete non-existent callback {}", key); | 473 | LOG_ERROR(Input, "Tried to delete non-existent callback {}", key); |