diff options
author | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2018-11-08 15:24:05 -0200 |
---|---|---|
committer | Georges Basile Stavracas Neto <georges.stavracas@gmail.com> | 2018-11-08 16:20:19 -0200 |
commit | c5ac3d6217d4e36e6101516be8ed4fa93e31a78b (patch) | |
tree | 6222661197427efeaebb1609dd974d1224fdf295 | |
parent | 3d23ecc456c9d92ffa1f70c6d0c314c7b82a0e5d (diff) | |
download | mutter-c5ac3d6217d4e36e6101516be8ed4fa93e31a78b.tar.gz |
theme: Drop gtk_css_provider_get_default()
Instead of using gtk_css_provider_get_default(), add a
static GtkCssProvider and fetch it instead. Creating
GtkCssProviders consume a bit more memory, so keeping
a single one alive is slightly more memory saving.
-rw-r--r-- | src/ui/theme.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/ui/theme.c b/src/ui/theme.c index 22951c24e..223bc04ae 100644 --- a/src/ui/theme.c +++ b/src/ui/theme.c @@ -1053,6 +1053,23 @@ create_style_context (GType widget_type, return style; } +static inline GtkCssProvider * +get_css_provider_for_theme_name (const gchar *theme_name, + const gchar *variant) +{ + static GtkCssProvider *default_provider = NULL; + + if (!theme_name || *theme_name == '\0') + { + if (G_UNLIKELY (default_provider == NULL)) + default_provider = gtk_css_provider_new (); + + return default_provider; + } + + return gtk_css_provider_get_named (theme_name, variant); +} + MetaStyleInfo * meta_theme_create_style_info (GdkScreen *screen, const gchar *variant) @@ -1065,10 +1082,7 @@ meta_theme_create_style_info (GdkScreen *screen, "gtk-theme-name", &theme_name, NULL); - if (theme_name && *theme_name) - provider = gtk_css_provider_get_named (theme_name, variant); - else - provider = gtk_css_provider_get_default (); + provider = get_css_provider_for_theme_name (theme_name, variant); g_free (theme_name); style_info = g_new0 (MetaStyleInfo, 1); |