st/icon: Only get resource-scale after peeking theme node
If an actor is not on any stage view, then it doesn't have a valid resource scale, which will hit an assert later. When that is the case (for example when running headless), we expect that there is no valid theme node (yet) either, so simply moving the clutter_actor_get_resource_scale() call after peeking at the theme node is enough to avoid the crash. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4522 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1935>
This commit is contained in:
parent
4bf5f7bdb1
commit
6e629c0f10
@ -487,8 +487,6 @@ st_icon_update (StIcon *icon)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
resource_scale = clutter_actor_get_resource_scale (CLUTTER_ACTOR (icon));
|
|
||||||
|
|
||||||
theme_node = st_widget_peek_theme_node (ST_WIDGET (icon));
|
theme_node = st_widget_peek_theme_node (ST_WIDGET (icon));
|
||||||
if (theme_node == NULL)
|
if (theme_node == NULL)
|
||||||
return;
|
return;
|
||||||
@ -496,6 +494,8 @@ st_icon_update (StIcon *icon)
|
|||||||
if (priv->icon_size <= 0)
|
if (priv->icon_size <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
resource_scale = clutter_actor_get_resource_scale (CLUTTER_ACTOR (icon));
|
||||||
|
|
||||||
stage = clutter_actor_get_stage (CLUTTER_ACTOR (icon));
|
stage = clutter_actor_get_stage (CLUTTER_ACTOR (icon));
|
||||||
context = st_theme_context_get_for_stage (CLUTTER_STAGE (stage));
|
context = st_theme_context_get_for_stage (CLUTTER_STAGE (stage));
|
||||||
g_object_get (context, "scale-factor", &paint_scale, NULL);
|
g_object_get (context, "scale-factor", &paint_scale, NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user