Showing the changes to libraries/script-engine/src/ScriptEngines.cpp (1 of 7 files). Show all
Unified · Split
| @@ -158,8 +158,69 @@ void ScriptEngines::removeScriptEngine(ScriptManagerPointer manager) { · 157 unmodified lines | |||
| 158 | QMutexLocker locker(&_allScriptsMutex); | 158 | QMutexLocker locker(&_allScriptsMutex); |
| 159 | _allKnownScriptManagers.remove(manager); | 159 | _allKnownScriptManagers.remove(manager); |
| 160 | } | 160 | } |
| 161 | std::lock_guard<std::mutex> lock(_subscriptionsToEntityScriptMessagesMutex); | ||
| 162 | _managersSubscribedToEntityScriptMessages.remove(manager.get()); | ||
| 163 | _entitiesSubscribedToEntityScriptMessages.remove(manager.get()); | ||
| 164 | } | ||
| 165 | |||
| 166 | void ScriptEngines::requestServerEntityScriptMessages(ScriptManager *manager) { | ||
| 167 | std::lock_guard<std::mutex> lock(_subscriptionsToEntityScriptMessagesMutex); | ||
| 168 | if (!_managersSubscribedToEntityScriptMessages.contains(manager)) { | ||
| 169 | _managersSubscribedToEntityScriptMessages.insert(manager); | ||
| 170 | // Emit a signal to inform EntityScriptServerLogClient about subscription request | ||
| 171 | emit requestingEntityScriptServerLog(true); | ||
| 172 | qDebug() << "ScriptEngines::requestServerEntityScriptMessages"; | ||
| 173 | } | ||
| 174 | } | ||
| 175 | |||
| 176 | void ScriptEngines::requestServerEntityScriptMessages(ScriptManager *manager, const QUuid& entityID) { | ||
| 177 | std::lock_guard<std::mutex> lock(_subscriptionsToEntityScriptMessagesMutex); | ||
| 178 | if (!_entitiesSubscribedToEntityScriptMessages.contains(manager)) { | ||
| 179 | _entitiesSubscribedToEntityScriptMessages.insert(manager,QSet<QUuid>()); | ||
| 180 | } | ||
| 181 | if (!_entitiesSubscribedToEntityScriptMessages[manager].contains(entityID)) { | ||
| 182 | _entitiesSubscribedToEntityScriptMessages[manager].insert(entityID); | ||
| 183 | // Emit a signal to inform EntityScriptServerLogClient about subscription request | ||
| 184 | emit requestingEntityScriptServerLog(true); | ||
| 185 | qDebug() << "ScriptEngines::requestServerEntityScriptMessages uuid"; | ||
| 186 | } | ||
| 187 | } | ||
| 188 | |||
| 189 | void ScriptEngines::removeServerEntityScriptMessagesRequest(ScriptManager *manager) { | ||
| 190 | std::lock_guard<std::mutex> lock(_subscriptionsToEntityScriptMessagesMutex); | ||
| 191 | if (_managersSubscribedToEntityScriptMessages.contains(manager)) { | ||
| 192 | _managersSubscribedToEntityScriptMessages.remove(manager); | ||
| 193 | } | ||
| 194 | if (_entitiesSubscribedToEntityScriptMessages.isEmpty() | ||
| 195 | && _managersSubscribedToEntityScriptMessages.isEmpty()) { | ||
| 196 | // No managers requiring entity script server messages remain, so we inform EntityScriptServerLogClient about this | ||
| 197 | // Emit a signal to inform EntityScriptServerLogClient about subscription request | ||
| 198 | emit requestingEntityScriptServerLog(false); | ||
| 199 | qDebug() << "ScriptEngines::removeServerEntityScriptMessagesRequest"; | ||
| 200 | } | ||
| 161 | } | 201 | } |
| 162 | 202 | ||
| 203 | void ScriptEngines::removeServerEntityScriptMessagesRequest(ScriptManager *manager, const QUuid& entityID) { | ||
| 204 | std::lock_guard<std::mutex> lock(_subscriptionsToEntityScriptMessagesMutex); | ||
| 205 | if (!_entitiesSubscribedToEntityScriptMessages.contains(manager)) { | ||
| 206 | return; | ||
| 207 | } | ||
| 208 | if (_entitiesSubscribedToEntityScriptMessages[manager].contains(entityID)) { | ||
| 209 | _entitiesSubscribedToEntityScriptMessages[manager].remove(entityID); | ||
| 210 | } | ||
| 211 | if (_entitiesSubscribedToEntityScriptMessages[manager].isEmpty()) { | ||
| 212 | _entitiesSubscribedToEntityScriptMessages.remove(manager); | ||
| 213 | } | ||
| 214 | if (_entitiesSubscribedToEntityScriptMessages.isEmpty() | ||
| 215 | && _managersSubscribedToEntityScriptMessages.isEmpty()) { | ||
| 216 | // No managers requiring entity script server messages remain, so we inform EntityScriptServerLogClient about this | ||
| 217 | // Emit a signal to inform EntityScriptServerLogClient about subscription request | ||
| 218 | emit requestingEntityScriptServerLog(false); | ||
| 219 | qDebug() << "ScriptEngines::removeServerEntityScriptMessagesRequest uuid"; | ||
| 220 | } | ||
| 221 | } | ||
| 222 | |||
| 223 | |||
| 163 | void ScriptEngines::shutdownScripting() { | 224 | void ScriptEngines::shutdownScripting() { |
| 164 | _isStopped = true; | 225 | _isStopped = true; |
| 165 | QMutexLocker locker(&_allScriptsMutex); | 226 | QMutexLocker locker(&_allScriptsMutex); |