From 155f7741fed2138d64ec0b06d8ec160c67ca12b3 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Mon, 5 Mar 2012 21:59:53 +0000 Subject: [PATCH] actor: Ensure static scope to allocation-changed arguments In theory, handlers connected to the ::allocation-changed signal may be able to modify the actor's real allocation and allocation flags, especially now that we use STATIC_SCOPE; let's avoid this, so that we don't regret it later. --- clutter/clutter-actor.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/clutter/clutter-actor.c b/clutter/clutter-actor.c index f84d7cf9d..bd39d47fe 100644 --- a/clutter/clutter-actor.c +++ b/clutter/clutter-actor.c @@ -2113,9 +2113,14 @@ clutter_actor_real_allocate (ClutterActor *self, clutter_actor_maybe_layout_children (self, box, flags); if (changed) - g_signal_emit (self, actor_signals[ALLOCATION_CHANGED], 0, - &priv->allocation, - priv->allocation_flags); + { + ClutterActorBox signal_box = priv->allocation; + ClutterAllocationFlags signal_flags = priv->allocation_flags; + + g_signal_emit (self, actor_signals[ALLOCATION_CHANGED], 0, + &signal_box, + signal_flags); + } g_object_thaw_notify (G_OBJECT (self)); } @@ -7981,9 +7986,14 @@ clutter_actor_set_allocation (ClutterActor *self, clutter_actor_maybe_layout_children (self, box, flags); if (changed) - g_signal_emit (self, actor_signals[ALLOCATION_CHANGED], 0, - &priv->allocation, - priv->allocation_flags); + { + ClutterActorBox signal_box = priv->allocation; + ClutterAllocationFlags signal_flags = priv->allocation_flags; + + g_signal_emit (self, actor_signals[ALLOCATION_CHANGED], 0, + &signal_box, + signal_flags); + } g_object_thaw_notify (G_OBJECT (self)); }