diff options
Diffstat (limited to 'src/font.cpp')
| -rw-r--r-- | src/font.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/font.cpp b/src/font.cpp index 004e9f8..de7814a 100644 --- a/src/font.cpp +++ b/src/font.cpp @@ -508,6 +508,11 @@ void FontType_Tick(double delta) { ft->gr.should_update_instance_buffer = true; return; } + // skip text if not valid. + // reminder: happens intentionally in FontType_RemoveStringRender. + if (fr->text.val == nullptr) { + return; + } index += fr->n_glyphs; }; pk_bkt_arr_iterate(&ft->renders, iter_fn.invoke, &iter_fn); @@ -538,6 +543,11 @@ void FontType_Tick(double delta) { if (fr->isMarkedForRemoval == true) { return; } + // skip text if not valid. + // reminder: happens intentionally in FontType_RemoveStringRender. + if (fr->text.val == nullptr) { + return; + } FontType_Inner_CalcTransforms(ft, fr, &fibis[index], &index); }; pk_bkt_arr_iterate(&ft->renders, iter_fn.invoke, &iter_fn); @@ -1156,9 +1166,16 @@ void FontType_RemoveStringRender(FontTypeRender ftr) { assert(pk_bkt_arr_handle_validate(&ftd.fonts, ftr.font_type_handle) == PK_BKT_ARR_HANDLE_VALIDATION_VALID); FontType *ft = &ftd.fonts[ftr.font_type_handle]; assert(pk_bkt_arr_handle_validate(&ft->renders, ftr.font_render_handle) == PK_BKT_ARR_HANDLE_VALIDATION_VALID); - // hack, but works - ft->gr.should_update_instance_buffer = true; fr = &ft->renders[ftr.font_render_handle]; + + // 2025-12-03 JCB + // This prevents text from being seen THIS tick. + ft->gr.should_update_instance_buffer = true; + if (fr->text.reserved > 0 && fr->text.val != NULL) pk_delete_arr<char>(fr->text.val, fr->text.reserved); + fr->text.val = nullptr; + fr->text.length = 0; + fr->text.reserved = 0; + ECS_MarkForRemoval(fr); } |
