Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 2 files). Show all
Unified · Split
| @@ -195,14 +195,6 @@ void ScriptEngine::runInThread() { · 194 unmodified lines | ||
| 195 | 195 | workerThread->start(); |
| 196 | 196 | } |
| 197 | 197 | |
| 198 | −void ScriptEngine::threadSafeAbortEvaluation() { | |
| 199 | − if (QThread::currentThread() != thread()) { | |
| 200 | − QMetaObject::invokeMethod(this, "threadSafeAbortEvaluation"); | |
| 201 | − return; | |
| 202 | − } | |
| 203 | − abortEvaluation(); | |
| 204 | −} | |
| 205 | − | |
| 206 | 198 | void ScriptEngine::waitTillDoneRunning() { |
| 207 | 199 | // If the script never started running or finished running before we got here, we don't need to wait for it |
| 208 | 200 | if (_isRunning && _isThreaded) { |
| @@ -218,21 +210,20 @@ void ScriptEngine::waitTillDoneRunning() { · 9 unmodified lines | ||
| 218 | 210 | // process events for the main application thread, allowing invokeMethod calls to pass between threads |
| 219 | 211 | QCoreApplication::processEvents(); |
| 220 | 212 | auto stillWaiting = usecTimestampNow(); |
| 221 | − auto elapsed = stillWaiting - startedWaiting; | |
| 213 | + auto elapsedUsecs = stillWaiting - startedWaiting; | |
| 222 | 214 | |
| 223 | 215 | // if we've been waiting a second or more, then tell the script engine to stop evaluating |
| 224 | 216 | static const auto MAX_SCRIPT_EVALUATION_TIME = USECS_PER_SECOND; |
| 225 | − if (elapsed > MAX_SCRIPT_EVALUATION_TIME) { | |
| 226 | − qCDebug(scriptengine) << "Script " << scriptName << " has been running too long [" << elapsed << "] aborting evaluation."; | |
| 227 | − threadSafeAbortEvaluation(); | |
| 228 | − } | |
| 217 | + static const auto WAITING_TOO_LONG = MAX_SCRIPT_EVALUATION_TIME * 5; | |
| 229 | 218 | |
| 230 | 219 | // if we've been waiting for more than 5 seconds then we should be more aggessive about stopping |
| 231 | − static const auto WAITING_TOO_LONG = USECS_PER_SECOND * 5; | |
| 232 | − if (elapsed > WAITING_TOO_LONG) { | |
| 233 | − qCDebug(scriptengine) << "Script " << scriptName << " has been running too long [" << elapsed << "] quitting."; | |
| 220 | + if (elapsedUsecs > WAITING_TOO_LONG) { | |
| 221 | + qCDebug(scriptengine) << "Script " << scriptName << " has been running too long [" << elapsedUsecs << "] quitting."; | |
| 234 | 222 | thread()->quit(); |
| 235 | 223 | break; |
| 224 | + } else if (elapsedUsecs > MAX_SCRIPT_EVALUATION_TIME) { | |
| 225 | + qCDebug(scriptengine) << "Script " << scriptName << " has been running too long [" << elapsedUsecs << "] aborting evaluation."; | |
| 226 | + QMetaObject::invokeMethod(this, "abortEvaluation"); | |
| 236 | 227 | } |
| 237 | 228 | } |
| 238 | 229 | } |