| 1545 | } |
| 1546 | |
| 1547 | void PluginProcessor::updatePluginStatus(int idx, bool ok, const String& err) { |
| 1548 | { |
| 1549 | std::lock_guard<std::mutex> lock(m_loadedPluginsSyncMtx); |
| 1550 | |
| 1551 | if (idx < 0 || idx >= (int)m_loadedPlugins.size()) { |
| 1552 | logln("updatePluginStatus failed: idx out of range"); |
| 1553 | return; |
| 1554 | } |
| 1555 | |
| 1556 | auto& plug = m_loadedPlugins[(size_t)idx]; |
| 1557 | plug.ok = ok; |
| 1558 | plug.error = err; |
| 1559 | } |
| 1560 | |
| 1561 | runOnMsgThreadAsync([this, idx, ok, err] { |
| 1562 | if (auto* e = dynamic_cast<PluginEditor*>(getActiveEditor())) { |
| 1563 | e->updatePluginStatus(idx, ok, err); |
| 1564 | } |
| 1565 | }); |
| 1566 | } |
| 1567 | |
| 1568 | void PluginProcessor::parameterValueChanged(int parameterIndex, float newValue) { |
| 1569 | traceScope(); |