st: Check for ClutterImage when creating shadow pipelines

_st_create_shadow_pipeline_from_actor creates shadow pipelines
from actors. This function special-cases ClutterTexture as a
small performance improvement, since we can have access to the
CoglTexture easily with it. However, recent commits removed all
usage of ClutterTexture from GNOME Shell, rendering this optimization
useless. Instead, actors now may have a ClutterImage set as
their content, that can be used instead.

Replace the check for ClutterTexture with a check for ClutterImage,
and use the texture of the image when it is available.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/371
This commit is contained in:
Georges Basile Stavracas Neto 2019-01-29 12:22:26 -02:00
parent a7bb8ee639
commit 8665045326
No known key found for this signature in database
GPG Key ID: 886C17EE170D1385

View File

@ -429,6 +429,7 @@ CoglPipeline *
_st_create_shadow_pipeline_from_actor (StShadow *shadow_spec,
ClutterActor *actor)
{
ClutterContent *image = NULL;
CoglPipeline *shadow_pipeline = NULL;
float width, height;
@ -439,11 +440,12 @@ _st_create_shadow_pipeline_from_actor (StShadow *shadow_spec,
if (width == 0 || height == 0)
return NULL;
if (CLUTTER_IS_TEXTURE (actor))
image = clutter_actor_get_content (actor);
if (image && CLUTTER_IS_IMAGE (image))
{
CoglTexture *texture;
texture = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (actor));
texture = clutter_image_get_texture (CLUTTER_IMAGE (image));
if (texture &&
cogl_texture_get_width (texture) == width &&
cogl_texture_get_height (texture) == height)