RenderResult RenderDoc::Render(RenderBase* driver) { //XOTRACE_RENDER( "RenderDoc: Reset\n" ); LayoutResult* layout = new LayoutResult(Doc); XOTRACE_RENDER("RenderDoc: Layout\n"); Layout lay; lay.PerformLayout(Doc, layout->Root, &layout->Pool); XOTRACE_RENDER("RenderDoc: Render\n"); Renderer rend; RenderResult res = rend.Render(&Doc, &ClonedImages, &Doc.Strings, driver, &layout->Root); // Atomically publish the new layout { std::lock_guard<std::mutex> lock(LayoutLock); PurgeOldLayouts(); if (LatestLayout != nullptr) { if (LatestLayout->IsLocked) OldLayouts += LatestLayout; else delete LatestLayout; } LatestLayout = layout; } return res; }