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.
This commit is contained in:
Matthias Clasen 2020-01-22 22:20:17 -05:00
parent 4ac8011126
commit 88d26b7549
3 changed files with 13 additions and 7 deletions

View File

@ -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 */

View File

@ -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

View File

@ -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__ */