gsk/gl: make max-frame-age configurable
authorChristian Hergert <chergert@redhat.com>
Tue, 15 Mar 2022 22:52:44 +0000 (15:52 -0700)
committerChristian Hergert <chergert@redhat.com>
Fri, 18 Mar 2022 19:33:33 +0000 (12:33 -0700)
This is nice for some texture libraries that we might want to keep around
for longer than say 60 frames such as a glyph cache.

gsk/gl/gskgltexturelibrary.c
gsk/gl/gskgltexturelibraryprivate.h

index 3d32c959457a2d219d3ef8f0bb02c57d26ad68de..414190ea7d071f2c663ff2bf5c3f0c716a34750b 100644 (file)
@@ -27,7 +27,7 @@
 #include "gskgldriverprivate.h"
 #include "gskgltexturelibraryprivate.h"
 
-#define MAX_FRAME_AGE 60
+#define DEFAULT_MAX_FRAME_AGE 60
 
 G_DEFINE_ABSTRACT_TYPE (GskGLTextureLibrary, gsk_gl_texture_library, G_TYPE_OBJECT)
 
@@ -118,6 +118,7 @@ gsk_gl_texture_library_class_init (GskGLTextureLibraryClass *klass)
 static void
 gsk_gl_texture_library_init (GskGLTextureLibrary *self)
 {
+  self->max_frame_age = DEFAULT_MAX_FRAME_AGE;
 }
 
 void
@@ -176,7 +177,7 @@ gsk_gl_texture_library_begin_frame (GskGLTextureLibrary *self,
                              G_OBJECT_TYPE_NAME (self), dropped));
     }
 
-  if (frame_id % MAX_FRAME_AGE == 0)
+  if (frame_id % self->max_frame_age == 0)
     {
       GskGLTextureAtlasEntry *entry;
       int atlased = 0;
index a784449889b1d8ce83c645ac6962094063e36ed3..bb1db121721a491c59a72538027f9f86b27e9f89 100644 (file)
@@ -89,10 +89,11 @@ typedef struct _GskGLTextureAtlasEntry
 
 typedef struct _GskGLTextureLibrary
 {
-  GObject        parent_instance;
+  GObject      parent_instance;
   GskGLDriver *driver;
-  GHashTable    *hash_table;
-  guint          max_entry_size;
+  GHashTable  *hash_table;
+  guint        max_entry_size;
+  guint        max_frame_age;
 } GskGLTextureLibrary;
 
 typedef struct _GskGLTextureLibraryClass