From aa34f6ad7cb6b34c08d51ca3b209b938e728fa57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 10 Jun 2020 15:05:10 +0200 Subject: [PATCH] clutter/actor: Pick frame clock of parent if not on any views An actor may be placed without being on any current stage view; in this case, to get the ball rolling, walk up the actor tree to find the first actor where a frame clock can be picked from. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1285 --- clutter/clutter/clutter-actor.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c index 1c323bc08..354d36a42 100644 --- a/clutter/clutter/clutter-actor.c +++ b/clutter/clutter/clutter-actor.c @@ -16269,11 +16269,20 @@ clutter_actor_peek_stage_views (ClutterActor *self) ClutterFrameClock * clutter_actor_pick_frame_clock (ClutterActor *self) { + ClutterActorPrivate *priv = self->priv; float max_refresh_rate = 0.0; ClutterStageView *best_view = NULL; GList *l; - for (l = self->priv->stage_views; l; l = l->next) + if (!priv->stage_views) + { + if (priv->parent) + return clutter_actor_pick_frame_clock (priv->parent); + else + return NULL; + } + + for (l = priv->stage_views; l; l = l->next) { ClutterStageView *view = l->data; float refresh_rate;