clutter/actor: Split building the transform into a separate function
It'll be used independently by the next commit to ensure ClutterStage has a valid transform set. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1439
This commit is contained in:
parent
2e986ed3e8
commit
1d13c52db8
@ -3145,20 +3145,28 @@ roll_back_pivot:
|
|||||||
|
|
||||||
/* Applies the transforms associated with this actor to the given
|
/* Applies the transforms associated with this actor to the given
|
||||||
* matrix. */
|
* matrix. */
|
||||||
|
static void
|
||||||
|
ensure_valid_actor_transform (ClutterActor *actor)
|
||||||
|
{
|
||||||
|
ClutterActorPrivate *priv = actor->priv;
|
||||||
|
|
||||||
|
if (priv->transform_valid)
|
||||||
|
return;
|
||||||
|
|
||||||
|
CLUTTER_ACTOR_GET_CLASS (actor)->apply_transform (actor, &priv->transform);
|
||||||
|
priv->has_inverse_transform =
|
||||||
|
cogl_matrix_get_inverse (&priv->transform, &priv->inverse_transform);
|
||||||
|
|
||||||
|
priv->transform_valid = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_clutter_actor_apply_modelview_transform (ClutterActor *self,
|
_clutter_actor_apply_modelview_transform (ClutterActor *self,
|
||||||
CoglMatrix *matrix)
|
CoglMatrix *matrix)
|
||||||
{
|
{
|
||||||
ClutterActorPrivate *priv = self->priv;
|
ClutterActorPrivate *priv = self->priv;
|
||||||
|
|
||||||
if (priv->transform_valid)
|
ensure_valid_actor_transform (self);
|
||||||
goto out;
|
|
||||||
|
|
||||||
CLUTTER_ACTOR_GET_CLASS (self)->apply_transform (self, &priv->transform);
|
|
||||||
|
|
||||||
priv->transform_valid = TRUE;
|
|
||||||
|
|
||||||
out:
|
|
||||||
cogl_matrix_multiply (matrix, matrix, &priv->transform);
|
cogl_matrix_multiply (matrix, matrix, &priv->transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user