Bug: Juce Timer is broken in ProTools

I am sorry to report that this is still not fixed on the latest release branch:

What I can see in ProTools is this:

  • The TimerThread is not started, because the AsyncUpdater message is discarded, because the MessageQueue is created twice, once to register the plugin and once to create the instance.
  • The first MessageQueue instance never delivers any messages before it is destroyed
  • The TimerThread is a SharedResource which is only created once and thus the AsyncUpdater message is never delivered

You may not see this, because we create a Timer when the plugin is created. I may work, if you create the timer much later.

1 Like

I tried to deferthe creation of our timer, but when we create the plugin we also set the Look and Feel, which cause the creation of the Desktop instance, which also has the Timer mixin. There are a lot more Juce classes that we can not access when the plugin instance is created because they all use the Timer mixin. Whatever workaround I try to find here is not a clean solution.

The problem stems from the TimerThread using the SharedResource construct now which means it is created only once.

I wonder, if my description makes sense. This is a serious issue and either the behavior is intended or it is a fact that needs to be documented. Juce Timers do not work in ProTools, if any Timer is created as during plugin instantiation.

Thanks for the reports I’ve pushed a fix for this on develop.

1 Like