[gtk/matthiasc/for-master: 3/3] Ensure icon themes are loaded with other themes



commit 35ed4b89eb2dbceae517f3fd62c2268d1c5be7c9
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Jan 22 22:20:17 2020 -0500

    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.

 gtk/gtkapplication.c      |  3 ++-
 gtk/gtkicontheme.c        | 15 +++++++++------
 gtk/gtkiconthemeprivate.h |  2 ++
 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__ */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]