Fix VST2 callbacks querying tempo-map

Some VST2 use a custom thread to make callbacks, in this case
the corresponding thread will not have fetched a thread-local
tempo-map.
This commit is contained in:
Robin Gareus 2022-03-20 15:41:56 +01:00
parent 6bcc0163cd
commit 40744c672a
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -75,7 +75,6 @@ intptr_t Session::vst_callback (
static VstTimeInfo _timeinfo; // only uses as fallback
VstTimeInfo* timeinfo;
int32_t newflags = 0;
TempoMap::SharedPtr tmap (TempoMap::use());
if (effect && effect->ptr1) {
plug = (VSTPlugin *) (effect->ptr1);
@ -183,6 +182,7 @@ intptr_t Session::vst_callback (
timeinfo->nanoSeconds = g_get_monotonic_time () * 1000;
if (plug && session) {
TempoMap::SharedPtr tmap (TempoMap::fetch());
samplepos_t now = plug->transport_sample();
timeinfo->samplePos = now;
@ -316,6 +316,7 @@ intptr_t Session::vst_callback (
SHOW_CALLBACK ("audioMasterTempoAt");
// returns tempo (in bpm * 10000) at sample sample location passed in <value>
if (session) {
TempoMap::SharedPtr tmap (TempoMap::fetch());
const Tempo& t (tmap->metric_at (value).tempo());
return t.quarter_notes_per_minute() * 1000;
} else {