mirror of
https://github.com/edu4rdshl/gnome-shell.git
synced 2026-07-17 23:24:51 +00:00
Merge branch 'fix-stylesheet-crash' into 'main'
st/theme-node: Forget properties cache on theme changes Closes #7339 See merge request GNOME/gnome-shell!3252
This commit is contained in:
commit
7659209db9
2 changed files with 16 additions and 3 deletions
|
|
@ -105,7 +105,7 @@ struct _StThemeNode {
|
|||
int box_shadow_min_width;
|
||||
int box_shadow_min_height;
|
||||
|
||||
guint stylesheets_changed_id;
|
||||
gulong stylesheets_changed_id;
|
||||
|
||||
CoglTexture *border_slices_texture;
|
||||
CoglPipeline *border_slices_pipeline;
|
||||
|
|
|
|||
|
|
@ -75,6 +75,10 @@ maybe_free_properties (StThemeNode *node)
|
|||
cr_declaration_destroy (node->inline_properties);
|
||||
node->inline_properties = NULL;
|
||||
}
|
||||
|
||||
g_clear_signal_handler (&node->stylesheets_changed_id, node->theme);
|
||||
|
||||
node->properties_computed = FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -102,6 +106,7 @@ st_theme_node_dispose (GObject *gobject)
|
|||
|
||||
st_theme_node_paint_state_free (&node->cached_state);
|
||||
|
||||
maybe_free_properties (node);
|
||||
g_clear_object (&node->theme);
|
||||
|
||||
G_OBJECT_CLASS (st_theme_node_parent_class)->dispose (gobject);
|
||||
|
|
@ -117,8 +122,6 @@ st_theme_node_finalize (GObject *object)
|
|||
g_strfreev (node->pseudo_classes);
|
||||
g_free (node->inline_style);
|
||||
|
||||
maybe_free_properties (node);
|
||||
|
||||
g_clear_pointer (&node->font_desc, pango_font_description_free);
|
||||
|
||||
g_clear_pointer (&node->box_shadow, st_shadow_unref);
|
||||
|
|
@ -472,6 +475,16 @@ ensure_properties (StThemeNode *node)
|
|||
node->n_properties = properties->len;
|
||||
node->properties = (CRDeclaration **)g_ptr_array_free (properties, FALSE);
|
||||
}
|
||||
|
||||
if (!node->stylesheets_changed_id)
|
||||
{
|
||||
node->stylesheets_changed_id =
|
||||
g_signal_connect_object (node->theme,
|
||||
"custom-stylesheets-changed",
|
||||
G_CALLBACK (maybe_free_properties),
|
||||
G_OBJECT (node),
|
||||
G_CONNECT_SWAPPED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue