summaryrefslogtreecommitdiff
path: root/render/glyphcache.c
diff options
context:
space:
mode:
Diffstat (limited to 'render/glyphcache.c')
-rw-r--r--render/glyphcache.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/render/glyphcache.c b/render/glyphcache.c
index c47ed0ed..517a67ef 100644
--- a/render/glyphcache.c
+++ b/render/glyphcache.c
@@ -340,14 +340,22 @@ fz_renderglyph(fz_glyphcache *arena, fz_glyph *glyph, fz_font *font, int cid, fz
if (size > arena->size / 6)
return nil;
- while (arena->load > arena->slots * 75 / 100) {
- covf ++;
- evictlast(arena);
+ while (arena->load > arena->slots * 75 / 100)
+ {
+ while (arena->load > arena->slots * 60 / 100)
+ {
+ covf ++;
+ evictlast(arena);
+ }
}
- while (arena->used + size >= arena->size) {
- coos ++;
- evictlast(arena);
+ if (arena->used + size >= arena->size)
+ {
+ while (arena->used + size >= arena->size * 80 / 100)
+ {
+ coos ++;
+ evictlast(arena);
+ }
}
val = &arena->lru[arena->load++];