gl: Don't leak big glyphs
authorMatthias Clasen <mclasen@redhat.com>
Mon, 4 Apr 2022 00:25:22 +0000 (20:25 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 5 Apr 2022 03:00:45 +0000 (23:00 -0400)
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.

gsk/gl/gskgltexturelibrary.c

index 3e6463a8484927d3b2910421b248da7d5708e271..996098581419746f0ce53c0ee236fabb08ccc250 100644 (file)
@@ -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;
             }
         }