* @brief Releases the dataset-pass scaffolding: unpins engine storage, disarms the watchdog and * drains any project mutation a transform queued while hot pointers were live. */
| 1416 | * drains any project mutation a transform queued while hot pointers were live. |
| 1417 | */ |
| 1418 | void DataModel::FrameBuilder::endDatasetPass(bool armedJsWatchdog) |
| 1419 | { |
| 1420 | Q_ASSERT(m_compileGuard > 0); |
| 1421 | |
| 1422 | --m_compileGuard; |
| 1423 | |
| 1424 | if (armedJsWatchdog) [[unlikely]] { |
| 1425 | m_jsEngineForSource->jsWatchdog->disarm(); |
| 1426 | if (m_jsTransformTimedOut) |
| 1427 | NotificationCenter::instance().postWarning( |
| 1428 | QStringLiteral("FrameBuilder"), |
| 1429 | tr("JavaScript transform exceeded budget"), |
| 1430 | tr("A dataset transform took longer than %1 ms; remaining datasets in the frame fell " |
| 1431 | "back to raw values until the next frame. Profile or simplify the transform code.") |
| 1432 | .arg(kTransformWatchdogMs)); |
| 1433 | } |
| 1434 | |
| 1435 | if (m_compileGuard == 0 && m_compilePending) [[unlikely]] { |
| 1436 | m_compilePending = false; |
| 1437 | QMetaObject::invokeMethod(this, [this] { compileTransforms(); }, Qt::QueuedConnection); |
| 1438 | } |
| 1439 | } |
| 1440 | |
| 1441 | /** |
| 1442 | * @brief Recomputes whether per-dataset values must be mirrored into the table store: only |
nothing calls this directly
no test coverage detected