summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-01-22 22:20:17 -0500
committerMatthias Clasen <mclasen@redhat.com>2020-01-22 23:44:01 -0500
commit88d26b75491c9a329a836c0d91a8f85ee3bc77d1 (patch)
tree59861a196347f54ed7fe2d2c87c865f35b82faac
parent4ac8011126fab9ad1d432fa70dead55d6fbffdf4 (diff)
downloadgtk+-88d26b75491c9a329a836c0d91a8f85ee3bc77d1.tar.gz
Ensure icon themes are loaded with other themes
Trigger icon theme loading from the code in GtkApplication where we set up the icon theme search path. This makes it happen before the first frame.
-rw-r--r--gtk/gtkapplication.c3
-rw-r--r--gtk/gtkicontheme.c15
-rw-r--r--gtk/gtkiconthemeprivate.h2
3 files changed, 13 insertions, 7 deletions
diff --git a/gtk/gtkapplication.c b/gtk/gtkapplication.c
index 82eea35e73..6bea5400b6 100644
--- a/gtk/gtkapplication.c
+++ b/gtk/gtkapplication.c
@@ -38,7 +38,7 @@
#include "gtkmain.h"
#include "gtkrecentmanager.h"
#include "gtkaccelmapprivate.h"
-#include "gtkicontheme.h"
+#include "gtkiconthemeprivate.h"
#include "gtkbuilder.h"
#include "gtkshortcutswindow.h"
#include "gtkintl.h"
@@ -218,6 +218,7 @@ gtk_application_load_resources (GtkApplication *application)
iconspath = g_strconcat (base_path, "/icons/", NULL);
gtk_icon_theme_add_resource_path (default_theme, iconspath);
g_free (iconspath);
+ gtk_icon_theme_ensure_loaded (default_theme);
}
/* Load the menus */
diff --git a/gtk/gtkicontheme.c b/gtk/gtkicontheme.c
index 38a0bd2761..820ef73348 100644
--- a/gtk/gtkicontheme.c
+++ b/gtk/gtkicontheme.c
@@ -762,7 +762,6 @@ do_theme_change (GtkIconTheme *self)
blow_themes (self);
queue_theme_changed (self);
-
}
static void
@@ -1270,6 +1269,7 @@ load_themes (GtkIconTheme *self)
IconThemeDirMtime *dir_mtime;
GStatBuf stat_buf;
GList *d;
+ gint64 before = g_get_monotonic_time ();
if (self->current_theme)
insert_theme (self, self->current_theme);
@@ -1356,6 +1356,9 @@ load_themes (GtkIconTheme *self)
g_message ("%s", s->str);
g_string_free (s, TRUE);
});
+
+ self->loading_themes = FALSE;
+ gdk_profiler_add_mark (before * 1000, (g_get_monotonic_time () - before) * 1000, "icon theme load", self->current_theme);
}
static void
@@ -1363,7 +1366,6 @@ ensure_valid_themes (GtkIconTheme *self)
{
GTimeVal tv;
gboolean was_valid = self->themes_valid;
- gint64 before = g_get_monotonic_time ();
if (self->loading_themes)
return;
@@ -1389,11 +1391,12 @@ ensure_valid_themes (GtkIconTheme *self)
if (was_valid)
queue_theme_changed (self);
}
+}
- if (gdk_profiler_is_running ())
- gdk_profiler_add_mark (before * 1000, (g_get_monotonic_time () - before) * 1000, "icon theme load", NULL);
-
- self->loading_themes = FALSE;
+void
+gtk_icon_theme_ensure_loaded (GtkIconTheme *self)
+{
+ ensure_valid_themes (self);
}
static inline gboolean
diff --git a/gtk/gtkiconthemeprivate.h b/gtk/gtkiconthemeprivate.h
index 132d5154ee..1c54944817 100644
--- a/gtk/gtkiconthemeprivate.h
+++ b/gtk/gtkiconthemeprivate.h
@@ -27,4 +27,6 @@ void gtk_icon_theme_lookup_symbolic_colors (GtkCssStyle *style,
GdkRGBA *warning_out,
GdkRGBA *error_out);
+void gtk_icon_theme_ensure_loaded (GtkIconTheme *self);
+
#endif /* __GTK_ICON_THEME_PRIVATE_H__ */