Fonts: ImFontAtlasBuildInit() is always called with atlas->Builder == NULL.

This commit is contained in:
ocornut
2025-04-17 16:53:12 +02:00
parent eb650c468a
commit 7840e453b5
2 changed files with 8 additions and 16 deletions

View File

@@ -3552,6 +3552,7 @@ static void ImFontAtlasBuildUpdateLinesTexData(ImFontAtlas* atlas)
//-----------------------------------------------------------------------------------------------------------------------------
// Was tempted to lazily init FontSrc but wouldn't save much + makes it more complicated to detect invalid data at AddFont()
bool ImFontAtlasBuildInitFontOutput(ImFontAtlas* atlas, ImFont* font)
{
bool ret = true;
@@ -4157,15 +4158,9 @@ void ImFontAtlasBuildInit(ImFontAtlas* atlas)
if (atlas->TexData == NULL || atlas->TexData->Pixels == NULL)
ImFontAtlasBuildAddTexture(atlas, ImUpperPowerOfTwo(atlas->TexMinWidth), ImUpperPowerOfTwo(atlas->TexMinHeight));
ImFontAtlasBuilder* builder = atlas->Builder; // Do not move above
const bool builder_is_new = (builder == NULL);
if (builder_is_new)
{
IM_ASSERT(atlas->Builder == NULL);
builder = atlas->Builder = IM_NEW(ImFontAtlasBuilder)();
if (atlas->FontLoader->LoaderInit)
atlas->FontLoader->LoaderInit(atlas);
}
atlas->Builder = IM_NEW(ImFontAtlasBuilder)();
if (atlas->FontLoader->LoaderInit)
atlas->FontLoader->LoaderInit(atlas);
ImFontAtlasBuildUpdateRendererHasTexturesFromContext(atlas);
@@ -4176,12 +4171,9 @@ void ImFontAtlasBuildInit(ImFontAtlas* atlas)
ImFontAtlasBuildUpdateBasicTexData(atlas);
// Register fonts
if (builder_is_new)
{
ImFontAtlasBuildUpdatePointers(atlas);
for (ImFontConfig& cfg : atlas->Sources)
ImFontAtlasBuildAddFont(atlas, &cfg);
}
ImFontAtlasBuildUpdatePointers(atlas);
for (ImFontConfig& cfg : atlas->Sources)
ImFontAtlasBuildAddFont(atlas, &cfg);
// Update UV coordinates etc. stored in bound ImDrawListSharedData instance
ImFontAtlasUpdateDrawListsSharedData(atlas);

View File

@@ -3753,7 +3753,7 @@ struct ImFontAtlasBuilder
// Cache of all ImFontBaked
ImStableVector<ImFontBaked,32> BakedPool;
ImGuiStorage BakedMap;
ImGuiStorage BakedMap; // BakedId --> ImFontBaked*
int BakedDiscardedCount;
// Custom rectangle identifiers