summaryrefslogtreecommitdiff
path: root/src/font.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/font.cpp')
-rw-r--r--src/font.cpp21
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);
}