actor: Ensure static scope to allocation-changed arguments
authorEmmanuele Bassi <ebassi@linux.intel.com>
Mon, 5 Mar 2012 21:59:53 +0000 (21:59 +0000)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Mon, 5 Mar 2012 23:45:36 +0000 (23:45 +0000)
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

index f84d7cf..bd39d47 100644 (file)
@@ -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));
 }