st/texture-cache: Fail loading invalid StImageContent

Creating a content object from a cairo surface may fail, in which case
we return an empty content with a 0x0 preferred size.

However when we treat such a content object as GIcon, we happily load
it anyway. Don't do that, so consumers like StIcon can fall back properly
to an alternative.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1761>
This commit is contained in:
Florian Müllner 2021-03-12 23:25:12 +01:00 committed by Marge Bot
parent f2db9b52c9
commit 5652550688

View File

@ -982,6 +982,15 @@ st_texture_cache_load_gicon (StTextureCache *cache,
if (ST_IS_IMAGE_CONTENT (icon)) if (ST_IS_IMAGE_CONTENT (icon))
{ {
int width, height;
g_object_get (G_OBJECT (icon),
"preferred-width", &width,
"preferred-height", &height,
NULL);
if (width == 0 && height == 0)
return NULL;
return g_object_new (CLUTTER_TYPE_ACTOR, return g_object_new (CLUTTER_TYPE_ACTOR,
"content-gravity", CLUTTER_CONTENT_GRAVITY_RESIZE_ASPECT, "content-gravity", CLUTTER_CONTENT_GRAVITY_RESIZE_ASPECT,
"width", actor_size, "width", actor_size,