void* threadEntryProc (AndroidThreadData* priv)
{
    priv->tId = (Thread::ThreadID) pthread_self();
    priv->eventSet.signal();
    priv->eventGet.wait (-1);

    juce_threadEntryPoint (priv->owner);

    return nullptr;
}
static unsigned int __stdcall threadEntryProc (void* userData)
{
    if (juce_messageWindowHandle != 0)
        AttachThreadInput (GetWindowThreadProcessId (juce_messageWindowHandle, 0),
                           GetCurrentThreadId(), TRUE);

    juce_threadEntryPoint (userData);

    _endthreadex (0);
    return 0;
}
extern "C" void* threadEntryProc (void* userData)
{
    ScopedPointer<AndroidThreadData> priv (reinterpret_cast<AndroidThreadData*> (userData));
    priv->tId = (Thread::ThreadID) pthread_self();
    priv->eventSet.signal();
    priv->eventGet.wait (-1);

    juce_threadEntryPoint (priv->owner);

    return nullptr;
}
static unsigned int __stdcall threadEntryProc (void* userData)
{
   #if ! JUCE_ONLY_BUILD_CORE_LIBRARY
    AttachThreadInput (GetWindowThreadProcessId (juce_messageWindowHandle, 0),
                       GetCurrentThreadId(), TRUE);
   #endif

    juce_threadEntryPoint (userData);

    _endthreadex (0);
    return 0;
}