MessageManagerLock from Message Thread?

Ok, let me see if I can answer the questions.

None of this is as a global static, other than some paths … which live inside a SharedResourcePointer and I’m pretty sure it’s safe. I have seen exactly that issue with Fonts though, as you elude too.

Per calling this within a lambda: I would have to lock the MM in the lambda which would be a problem since this is done in some constructors where you really can’t lock the MM thread (hence the Async call).

Regarding best practices, I completely agree that components shouldn’t live in the processor. I was quite surprised to find that Drawables were components! You can, of course, add something like a Colour, or Path inside the processor … and I would have thought DrawablePaths were similar. Jules even says he regrets not separating the Component aspects of Drawables from the classes themselves on this thread (Is there any way to convert svg to Image on a background thread? - #5 by xenakios)

In any event, the likely best solution here is for me to get rid of the DrawablePath object in favor of Paths and Colors, which can essentially represent the same thing and just construct the DrawablePath in the relevant components.

Per JUCE_ASSERT_MESSAGE_MANAGER_IS_LOCKED - good idea to step through it, I’ll take a look!!