forked from AuroraMiddleware/gtk
IconHelper: Only preload icons once
This limits the amount of preloading we to, which can for instance avoid trashing if the icon cache is full, and in general do less work when its likely to be wasted such as when e.g. background-color for an icon helper changes.
This commit is contained in:
parent
c69327caa8
commit
498ab6ac6c
@ -48,6 +48,7 @@ struct _GtkIconHelper
|
|||||||
guint use_fallback : 1;
|
guint use_fallback : 1;
|
||||||
guint force_scale_pixbuf : 1;
|
guint force_scale_pixbuf : 1;
|
||||||
guint texture_is_symbolic : 1;
|
guint texture_is_symbolic : 1;
|
||||||
|
guint preloaded : 1;
|
||||||
|
|
||||||
GtkWidget *owner;
|
GtkWidget *owner;
|
||||||
GtkCssNode *node;
|
GtkCssNode *node;
|
||||||
@ -184,6 +185,12 @@ _gtk_icon_helper_preload (GtkIconHelper *self)
|
|||||||
GIcon *gicon = NULL;
|
GIcon *gicon = NULL;
|
||||||
GIcon *free_gicon = NULL;
|
GIcon *free_gicon = NULL;
|
||||||
|
|
||||||
|
/* Avoid constantly preloading as it may cause issues if we're trashing the icon cache */
|
||||||
|
if (self->preloaded)
|
||||||
|
return;
|
||||||
|
|
||||||
|
self->preloaded = TRUE;
|
||||||
|
|
||||||
switch (gtk_image_definition_get_storage_type (self->def))
|
switch (gtk_image_definition_get_storage_type (self->def))
|
||||||
{
|
{
|
||||||
case GTK_IMAGE_ICON_NAME:
|
case GTK_IMAGE_ICON_NAME:
|
||||||
|
Loading…
Reference in New Issue
Block a user