diff options
author | Matthias Clasen <mclasen@redhat.com> | 2022-04-03 20:25:22 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2022-04-04 23:00:45 -0400 |
commit | 48dbbbc0992bffa9d2167c37d8256d27fe4328a5 (patch) | |
tree | d5c98018ebc4a6fbbd3b1461dd04b016187675d6 | |
parent | d75147db0acd7723732790155fd3a63688193c63 (diff) | |
download | gtk+-48dbbbc0992bffa9d2167c37d8256d27fe4328a5.tar.gz |
gl: Don't leak big glyphs
We were never resetting the accessed bit of
glyphs that are big enough to be stored individually,
so these would just accumulate and never be dropped.
-rw-r--r-- | gsk/gl/gskgltexturelibrary.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/gsk/gl/gskgltexturelibrary.c b/gsk/gl/gskgltexturelibrary.c index 3e6463a848..9960985814 100644 --- a/gsk/gl/gskgltexturelibrary.c +++ b/gsk/gl/gskgltexturelibrary.c @@ -108,11 +108,17 @@ gsk_gl_texture_library_real_compact (GskGLTextureLibrary *self, atlased++; } } - else if (!entry->accessed) + else { - gsk_gl_driver_release_texture (self->driver, entry->texture); - g_hash_table_iter_remove (&iter); - dropped++; + if (!entry->accessed) + { + gsk_gl_driver_release_texture (self->driver, entry->texture); + g_hash_table_iter_remove (&iter); + dropped++; + } + + if (periodic_scan) + entry->accessed = FALSE; } } |