[Bf-blender-cvs] [41dbb06b765] master: Fix T74228, T74246: Strange Characters

Germano Cavalcante noreply at git.blender.org
Thu Feb 27 14:59:01 CET 2020


Commit: 41dbb06b765acbf44a45f20fc29b232dafac20ca
Author: Germano Cavalcante
Date:   Thu Feb 27 10:55:07 2020 -0300
Branches: master
https://developer.blender.org/rB41dbb06b765acbf44a45f20fc29b232dafac20ca

Fix T74228, T74246: Strange Characters

The glyph can come from a different cache.

===================================================================

M	source/blender/blenfont/intern/blf_glyph.c
M	source/blender/blenfont/intern/blf_internal_types.h

===================================================================

diff --git a/source/blender/blenfont/intern/blf_glyph.c b/source/blender/blenfont/intern/blf_glyph.c
index 8e88bda37a5..3ab6814c531 100644
--- a/source/blender/blenfont/intern/blf_glyph.c
+++ b/source/blender/blenfont/intern/blf_glyph.c
@@ -461,7 +461,7 @@ void blf_glyph_render(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, float x, fl
     return;
   }
 
-  if (!g->cached) {
+  if (g->glyph_cache == NULL) {
     if (font->tex_size_max == -1) {
       font->tex_size_max = GPU_max_texture_size();
     }
@@ -492,7 +492,7 @@ void blf_glyph_render(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, float x, fl
     gc->bitmap_len = bitmap_len;
 
     gc->glyphs_len_free--;
-    g->cached = true;
+    g->glyph_cache = gc;
   }
 
   if (font->flags & BLF_CLIPPING) {
@@ -505,8 +505,10 @@ void blf_glyph_render(FontBLF *font, GlyphCacheBLF *gc, GlyphBLF *g, float x, fl
     }
   }
 
-  g_batch.glyph_cache = gc;
-  BLI_assert(g->offset < gc->bitmap_len);
+  if (g_batch.glyph_cache != g->glyph_cache) {
+    blf_batch_draw();
+    g_batch.glyph_cache = g->glyph_cache;
+  }
 
   if (font->flags & BLF_SHADOW) {
     rctf rect_ofs;
diff --git a/source/blender/blenfont/intern/blf_internal_types.h b/source/blender/blenfont/intern/blf_internal_types.h
index bb1697d7860..6ea1702200f 100644
--- a/source/blender/blenfont/intern/blf_internal_types.h
+++ b/source/blender/blenfont/intern/blf_internal_types.h
@@ -131,7 +131,7 @@ typedef struct GlyphBLF {
   float pos_x;
   float pos_y;
 
-  bool cached;
+  struct GlyphCacheBLF *glyph_cache;
 } GlyphBLF;
 
 typedef struct FontBufInfoBLF {



More information about the Bf-blender-cvs mailing list