Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-01-16 20:04:46 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-01-16 20:13:23 +0400
commita780e7f3f09ffec99600a518a17b219b5aaee2c6 (patch)
treeb6cc469fa8c76d61477ea3182a4e819653a7c4d4 /source/blender
parentde28a4d4b2c9397c5233a5ee1dbf1400f450a15c (diff)
BLF: Fix for changing the DPI storing many fonts (300+)
Each dpi value stores its own set of font sizes, so while dragging the dpi value would collect many sizes and never free. Also change how BLF_cache_clear works, it was freeing memory but not the OpenGL textures. Now just free all the cache and GL textures and let drawing allocate them again as needed.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenfont/intern/blf_glyph.c12
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c3
2 files changed, 5 insertions, 10 deletions
diff --git a/source/blender/blenfont/intern/blf_glyph.c b/source/blender/blenfont/intern/blf_glyph.c
index 637f534563f..248c645edc0 100644
--- a/source/blender/blenfont/intern/blf_glyph.c
+++ b/source/blender/blenfont/intern/blf_glyph.c
@@ -121,17 +121,9 @@ GlyphCacheBLF *blf_glyph_cache_new(FontBLF *font)
void blf_glyph_cache_clear(FontBLF *font)
{
GlyphCacheBLF *gc;
- GlyphBLF *g;
- int i;
-
- for (gc = font->cache.first; gc; gc = gc->next) {
- for (i = 0; i < 257; i++) {
- while ((g = BLI_pophead(&gc->bucket[i]))) {
- blf_glyph_free(g);
- }
- }
- memset(gc->glyph_ascii_table, 0, sizeof(gc->glyph_ascii_table));
+ while ((gc = BLI_pophead(&font->cache))) {
+ blf_glyph_cache_free(gc);
}
}
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index f4cb4701581..7b5c269ff0d 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -111,6 +111,9 @@ static void rna_userdef_update(Main *UNUSED(bmain), Scene *UNUSED(scene), Pointe
/* also used by buffer swap switching */
static void rna_userdef_dpi_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *UNUSED(ptr))
{
+ /* font's are stored at each DPI level, without this we can easy load 100's of fonts */
+ BLF_cache_clear();
+
BKE_userdef_state();
WM_main_add_notifier(NC_WINDOW, NULL); /* full redraw */
WM_main_add_notifier(NC_SCREEN | NA_EDITED, NULL); /* refresh region sizes */