summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2020-09-11 10:29:46 -0300
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2020-09-25 11:19:51 -0300
commit5b9a3e53e5ebde8979339e6a92c3c489cb74ceec (patch)
treeb3536af82db97bf27afee1d16d23aa75727f3984
parenta854ab17a7e77a489f33da8588106d93f95ec40f (diff)
downloadmutter-5b9a3e53e5ebde8979339e6a92c3c489cb74ceec.tar.gz
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
-rw-r--r--clutter/clutter/clutter-actor.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index 3559b4d64..12a9fbf39 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -3145,20 +3145,28 @@ roll_back_pivot:
/* Applies the transforms associated with this actor to the given
* matrix. */
-void
-_clutter_actor_apply_modelview_transform (ClutterActor *self,
- CoglMatrix *matrix)
+static void
+ensure_valid_actor_transform (ClutterActor *actor)
{
- ClutterActorPrivate *priv = self->priv;
+ ClutterActorPrivate *priv = actor->priv;
if (priv->transform_valid)
- goto out;
+ return;
- CLUTTER_ACTOR_GET_CLASS (self)->apply_transform (self, &priv->transform);
+ 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;
+}
-out:
+void
+_clutter_actor_apply_modelview_transform (ClutterActor *self,
+ CoglMatrix *matrix)
+{
+ ClutterActorPrivate *priv = self->priv;
+
+ ensure_valid_actor_transform (self);
cogl_matrix_multiply (matrix, matrix, &priv->transform);
}