As we all knows, when we LoadMap in Unreal engine, the main thread will be blocked, and the UI will be stuck. So Unreal provide us FDefaultGameMoviePlayer, which uses another thread (SlateLoadingThread) to call Paint for the specified WidgetLoadingScreen. This is done in FMoviePlayerWidgetRenderer::DrawWindow.
But I could not figure out why Unreal does not just call FSlateApplication::Get().Tick(ESlateTickType::TimeAndWidgets); in FMoviePlayerWidgetRenderer::DrawWindow, which would lead to the UMG animation tick. During the lifetime of SlateLoadingThread, the main thread will keep stuck in LoadMap, so there should not exists any race condition between the main thread and SlateLoadingThread.
Is there any problem if the UMG animation tick is not called in the main thread?