Per-host quirks for PreSonus Studio One. More...
Go to the source code of this file.
Namespaces | |
| namespace | pulp |
| namespace | pulp::format |
| What the product grants a device: the quota table indexed by capability tier and live thermal state. | |
| namespace | pulp::format::host_quirks |
Functions | |
| void | pulp::format::host_quirks::apply_studio_one (HostQuirks &q, HostVersion) |
| Populate Studio One host-gated flags onto q. | |
Per-host quirks for PreSonus Studio One.
Studio One's VST3 host serializes IComponentHandler::restartComponent notifications through a non-thread-safe lane: calls that arrive from the audio thread (most commonly kLatencyChanged from a delay-line resize) can deadlock the host or be silently dropped. Cubase / Nuendo / Reaper accept the call from any thread; Studio One does not.
The independent fix marshals restartComponent calls to the UI thread when the host is detected as Studio One. The dispatch lives here; the VST3 adapter consults the flag to decide whether to post the notification through core/events::EventLoop rather than invoking the host handler directly.
The threading contract appears in every Studio One release Pulp has surveyed (5.x and 6.x). apply_studio_one fires the flag unconditionally; if a future Studio One release switches to a thread-safe restart-component lane, add an is_before(major, minor) guard at that point.
LessonOnly as of the 2026-05-26 iPlug2-audit batch — documented from Steinberg's VST3 SDK threading contract + PreSonus user-forum reports, no in-tree bench yet. Promote to Speculative after the per-symptom isolation tests ship; promote to Validated after Studio One bench evidence lands.
Reference-Lineage: independent reproducer=#3045 docs=https://steinbergmedia.github.io/vst3_dev_portal/pages/Technical+Documentation/Workflow+Diagrams/Edit+Controller+Call+Sequence.html