* @brief Destroys all per-source transform engines and releases resources. */
| 2193 | * @brief Destroys all per-source transform engines and releases resources. |
| 2194 | */ |
| 2195 | void DataModel::FrameBuilder::destroyTransformEngines() |
| 2196 | { |
| 2197 | m_engineCacheSourceId = -1; |
| 2198 | m_luaEngineForSource = nullptr; |
| 2199 | m_jsEngineForSource = nullptr; |
| 2200 | m_captureFlagsDirty = true; |
| 2201 | |
| 2202 | m_tableStore.clearLookupCache(); |
| 2203 | |
| 2204 | for (auto& [id, engine] : m_transformEngines) { |
| 2205 | engine.jsRefs.clear(); |
| 2206 | |
| 2207 | if (engine.luaState) |
| 2208 | for (const auto& [uid, ref] : engine.luaRefs) |
| 2209 | luaL_unref(engine.luaState, LUA_REGISTRYINDEX, ref.ref); |
| 2210 | |
| 2211 | engine.luaRefs.clear(); |
| 2212 | |
| 2213 | if (engine.luaState) { |
| 2214 | lua_close(engine.luaState); |
| 2215 | engine.luaState = nullptr; |
| 2216 | } |
| 2217 | |
| 2218 | engine.jsWatchdog.reset(); |
| 2219 | |
| 2220 | delete engine.jsEngine; |
| 2221 | engine.jsEngine = nullptr; |
| 2222 | } |
| 2223 | |
| 2224 | m_transformEngines.clear(); |
| 2225 | Q_ASSERT(m_transformEngines.empty()); |
| 2226 | } |
| 2227 | |
| 2228 | /** |
| 2229 | * @brief Applies the pre-compiled transform for a dataset; returns @p rawValue on error or missing |
nothing calls this directly
no test coverage detected