st/texture-cache: Monitor GtkIconTheme changes
The texture cache, right now, only monitors for complete theme changes. If the contents of the icon theme change, however, the texture cache isn't properly invalidated. This manifests itself as a randomly reproducible bug when installing an app; the app icon may be the fallback forever, or as long as something else updates the icon theme. Watch for the GtkIconTheme:changed signal, and evict the texture cache when the theme changes. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/661
This commit is contained in:
parent
12b8fb15b1
commit
06a7ab871f
@ -150,6 +150,14 @@ on_icon_theme_changed (StSettings *settings,
|
|||||||
g_signal_emit (cache, signals[ICON_THEME_CHANGED], 0);
|
g_signal_emit (cache, signals[ICON_THEME_CHANGED], 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_gtk_icon_theme_changed (GtkIconTheme *icon_theme,
|
||||||
|
StTextureCache *self)
|
||||||
|
{
|
||||||
|
st_texture_cache_evict_icons (self);
|
||||||
|
g_signal_emit (self, signals[ICON_THEME_CHANGED], 0);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_texture_cache_init (StTextureCache *self)
|
st_texture_cache_init (StTextureCache *self)
|
||||||
{
|
{
|
||||||
@ -160,6 +168,8 @@ st_texture_cache_init (StTextureCache *self)
|
|||||||
self->priv->icon_theme = gtk_icon_theme_new ();
|
self->priv->icon_theme = gtk_icon_theme_new ();
|
||||||
gtk_icon_theme_add_resource_path (self->priv->icon_theme,
|
gtk_icon_theme_add_resource_path (self->priv->icon_theme,
|
||||||
"/org/gnome/shell/theme/icons");
|
"/org/gnome/shell/theme/icons");
|
||||||
|
g_signal_connect (self->priv->icon_theme, "changed",
|
||||||
|
G_CALLBACK (on_gtk_icon_theme_changed), self);
|
||||||
|
|
||||||
settings = st_settings_get ();
|
settings = st_settings_get ();
|
||||||
g_signal_connect (settings, "notify::gtk-icon-theme",
|
g_signal_connect (settings, "notify::gtk-icon-theme",
|
||||||
|
Loading…
Reference in New Issue
Block a user