Showing the changes to libraries/script-engine/src/ScriptManager.cpp (1 of 2 files). Show all
Unified · Split
| @@ -1171,8 +1171,8 @@ void ScriptManager::run() { · 1170 unmodified lines | ||
| 1171 | 1171 | // NOTE: This is private because it must be called on the same thread that created the timers, which is why |
| 1172 | 1172 | // we want to only call it in our own run "shutdown" processing. |
| 1173 | 1173 | void ScriptManager::stopAllTimers() { |
| 1174 | − for (const auto& [handle, value] : _timerFunctionMap) { | |
| 1175 | − QTimer* timer = std::get<0>(value); | |
| 1174 | + for (const auto& pair : _timerFunctionMap) { | |
| 1175 | + QTimer* timer = std::get<0>(pair); | |
| 1176 | 1176 | |
| 1177 | 1177 | timer->stop(); |
| 1178 | 1178 | delete timer; |
| @@ -1183,10 +1183,15 @@ void ScriptManager::stopAllTimers() { · 4 unmodified lines | ||
| 1183 | 1183 | } |
| 1184 | 1184 | |
| 1185 | 1185 | void ScriptManager::stopAllTimersForEntityScript(const EntityItemID& entityID) { |
| 1186 | − std::vector<int> toDelete; | |
| 1186 | + std::vector<int> toDelete = {}; | |
| 1187 | 1187 | |
| 1188 | − for (const auto& [handle, value] : _timerFunctionMap) { | |
| 1189 | − const auto& [timer, callbackData] = value; | |
| 1188 | + for ( | |
| 1189 | + auto i = _timerFunctionMap.constKeyValueBegin(); | |
| 1190 | + i != _timerFunctionMap.constKeyValueEnd(); | |
| 1191 | + ++i | |
| 1192 | + ) { | |
| 1193 | + const auto& handle = i->first; | |
| 1194 | + const auto& [timer, callbackData] = i->second; | |
| 1190 | 1195 | |
| 1191 | 1196 | if (callbackData.definingEntityIdentifier != entityID) { continue; } |
| 1192 | 1197 | |
| @@ -1197,7 +1202,7 @@ void ScriptManager::stopAllTimersForEntityScript(const EntityItemID& entityID) { · 4 unmodified lines | ||
| 1197 | 1202 | } |
| 1198 | 1203 | |
| 1199 | 1204 | for (auto handle : toDelete) { |
| 1200 | − _timerFunctionMap.erase(handle); | |
| 1205 | + _timerFunctionMap.remove(handle); | |
| 1201 | 1206 | } |
| 1202 | 1207 | |
| 1203 | 1208 | // the timer map is potentially shared across multiple entity scripts, |
| @@ -1252,11 +1257,11 @@ void ScriptManager::timerFired(int handle) { · 48 unmodified lines | ||
| 1252 | 1257 | return; |
| 1253 | 1258 | } |
| 1254 | 1259 | |
| 1255 | − auto [timer, data] = _timerFunctionMap.at(handle); | |
| 1260 | + auto [timer, data] = _timerFunctionMap.value(handle); | |
| 1256 | 1261 | |
| 1257 | 1262 | if (!timer->isActive()) { |
| 1258 | 1263 | // this timer is done, we can kill it |
| 1259 | − _timerFunctionMap.erase(handle); | |
| 1264 | + _timerFunctionMap.remove(handle); | |
| 1260 | 1265 | delete timer; |
| 1261 | 1266 | } |
| 1262 | 1267 | |
| @@ -1278,8 +1283,7 @@ void ScriptManager::timerFired(int handle) { · 15 unmodified lines | ||
| 1278 | 1283 | } |
| 1279 | 1284 | |
| 1280 | 1285 | int ScriptManager::setupTimerWithInterval(const ScriptValue& function, int intervalMS, bool isSingleShot) { |
| 1281 | − int handle = _timerHandleCounter; | |
| 1282 | − _timerHandleCounter += 1; | |
| 1286 | + int handle = _timerHandleCounter++; | |
| 1283 | 1287 | |
| 1284 | 1288 | // create the timer, add it to the map, and start it |
| 1285 | 1289 | QTimer* newTimer = new QTimer(this); |
| @@ -1297,7 +1301,7 @@ int ScriptManager::setupTimerWithInterval(const ScriptValue& function, int inter · 11 unmodified lines | ||
| 1297 | 1301 | connect(this, &ScriptManager::scriptEnding, newTimer, &QTimer::stop); |
| 1298 | 1302 | |
| 1299 | 1303 | CallbackData timerData = { function, currentEntityIdentifier, currentSandboxURL }; |
| 1300 | − _timerFunctionMap.insert({ handle, { newTimer, timerData } }); | |
| 1304 | + _timerFunctionMap.insert(handle, { newTimer, timerData }); | |
| 1301 | 1305 | |
| 1302 | 1306 | if (intervalMS < 0) { |
| 1303 | 1307 | int lineNumber = -1; |
| @@ -1350,9 +1354,9 @@ int ScriptManager::setTimeout(const ScriptValue& function, int timeoutMS) { · 46 unmodified lines | ||
| 1350 | 1354 | |
| 1351 | 1355 | void ScriptManager::stopTimer(int handle) { |
| 1352 | 1356 | if (_timerFunctionMap.contains(handle)) { |
| 1353 | − auto [timer, callbackData] = _timerFunctionMap.at(handle); | |
| 1357 | + auto [timer, callbackData] = _timerFunctionMap.value(handle); | |
| 1354 | 1358 | timer->stop(); |
| 1355 | − _timerFunctionMap.erase(handle); | |
| 1359 | + _timerFunctionMap.remove(handle); | |
| 1356 | 1360 | delete timer; |
| 1357 | 1361 | } else { |
| 1358 | 1362 | qCDebug(scriptengine) << "stopTimer -- not in _timerFunctionMap" << handle; |