Fonts: Fixed support for multiple contexts.

This commit is contained in:
ocornut
2024-12-27 11:23:22 +01:00
committed by ocornut
parent cec3e945f0
commit a2bc3d81c2
4 changed files with 44 additions and 42 deletions

View File

@@ -5184,7 +5184,8 @@ static void ImGui::UpdateTexturesNewFrame()
// FIXME-NEWATLAS: How to reach/target all atlas?
ImGuiContext& g = *GImGui;
ImFontAtlas* atlas = g.IO.Fonts;
ImFontAtlasUpdateNewFrame(atlas);
if (g.FontAtlasOwnedByContext)
ImFontAtlasUpdateNewFrame(atlas);
}
// Build a single texture list
@@ -5245,7 +5246,7 @@ void ImGui::NewFrame()
if (!atlas->TexIsBuilt && (g.IO.BackendFlags & ImGuiBackendFlags_RendererHasTextures))
ImFontAtlasBuildMain(atlas);
else // Legacy backend
IM_ASSERT(atlas->TexIsBuilt && "Backend does not support ImGuiBackendFlags_RendererHasTexUpdates, and font atlas is not built! Update backend OR make sure you called ImGui_ImplXXXX_NewFrame() function for renderer backend, which should call io.Fonts->GetTexDataAsRGBA32() / GetTexDataAsAlpha8().");
IM_ASSERT(atlas->TexIsBuilt && "Backend does not support ImGuiBackendFlags_RendererHasTextures, and font atlas is not built! Update backend OR make sure you called ImGui_ImplXXXX_NewFrame() function for renderer backend, which should call io.Fonts->GetTexDataAsRGBA32() / GetTexDataAsAlpha8().");
// Check and assert for various common IO and Configuration mistakes
ErrorCheckNewFrameSanityChecks();
@@ -15615,7 +15616,7 @@ void ImGui::ShowFontAtlas(ImFontAtlas* atlas)
if (TreeNode("Loader", "Loader: \'%s\'", atlas->FontLoaderName ? atlas->FontLoaderName : "NULL"))
{
const ImFontLoader* loader_current = atlas->FontLoader;
BeginDisabled(!atlas->DrawListSharedData || !atlas->DrawListSharedData->RendererHasTextures);
BeginDisabled(!atlas->RendererHasTextures);
#ifdef IMGUI_ENABLE_STB_TRUETYPE
const ImFontLoader* loader_stbtruetype = ImFontAtlasGetFontLoaderForStbTruetype();
if (RadioButton("stb_truetype", loader_current == loader_stbtruetype))