I’m experiencing instabilities with the tracktion playhead and after some digging I found that lastUserDragTime in TransportState is of type CachedValue <bool>. This seems strange because this variable is used to store time.
e.g. transportState->lastUserDragTime = juce::Time::getMillisecondCounter();
Could someone from Tracktion team take a look at this?
I was calling TransportControl::setPosition to manually change the position. I was doing this under the assumption that this would trigger one valuetree callback synchronously. I set up my valuetree callbacks to discard this single callback to avoid an infinite loop in my application. This was working properly until I updated to the latest tracktion develop.
Before your fix, I think this code juce::Time::getMillisecondCounter() - transportState->lastUserDragTime > 200) was never discarding transportState->updatePositionFromPlayhead (currentTime); and therefore incorrectly calling updatePositionFromPlayhead.