AsyncUpdater which don't malloc

Really? In Win32 case:

//==============================================================================
bool MessageManager::callFunctionOnMessageThreadAsynchronously (MessageCallbackFunction* callback,
                                                   void* userData)
{
    if (MessageManager::getInstance()->isThisTheMessageThread())
    {
        // Don't care about return value in this case
        (void)(*callback) (userData);
        return true;
    }
    else
    {
        // No deadlock probs here...
        return (PostMessage (juce_messageWindowHandle,
                                    specialCallbackId,
                                    (WPARAM) callback,
                                    (LPARAM) userData) != 0);
    }
}

No allocations needed. Probably analogous for Mac/Linux case. My earlier post is edited to match this proposal.