[mutter/wip/carlosg/avoid-parent-relayouts: 288/289] clutter: Avoid relayouts when raising/lowering children
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/carlosg/avoid-parent-relayouts: 288/289] clutter: Avoid relayouts when raising/lowering children
- Date: Tue, 4 Dec 2018 15:24:24 +0000 (UTC)
commit d423906a7c217b8756dd23299531ef25ac042468
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri Aug 10 21:30:58 2018 +0200
clutter: Avoid relayouts when raising/lowering children
These calls don't actually affect the layout, but the paint order.
It seems safe to skip the full relayout/repaint of the parent actor,
and redraw only the area occupied by the affected child.
clutter/clutter/clutter-actor.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
---
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index f455f2b29..6913f315a 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -1722,6 +1722,22 @@ set_show_on_set_parent (ClutterActor *self,
}
}
+static void
+clutter_actor_queue_redraw_on_parent (ClutterActor *self)
+{
+ const ClutterPaintVolume *pv;
+
+ if (!self->priv->parent)
+ return;
+
+ /* A relayout/redraw is underway */
+ if (self->priv->needs_allocation)
+ return;
+
+ pv = clutter_actor_get_transformed_paint_volume (self, self->priv->parent);
+ _clutter_actor_queue_redraw_with_clip (self->priv->parent, 0, pv);
+}
+
/**
* clutter_actor_show:
* @self: A #ClutterActor
@@ -13655,7 +13671,7 @@ clutter_actor_set_child_above_sibling (ClutterActor *self,
sibling);
g_object_unref(child);
- clutter_actor_queue_relayout (self);
+ clutter_actor_queue_redraw_on_parent (child);
}
/**
@@ -13702,7 +13718,7 @@ clutter_actor_set_child_below_sibling (ClutterActor *self,
sibling);
g_object_unref(child);
- clutter_actor_queue_relayout (self);
+ clutter_actor_queue_redraw_on_parent (child);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]