During the gutting of ClutterBox, the destroy and dispose implementation
were removed. The former, especially, destroyed all children - which
usually meant that the redraw queues for the childre was cleared as
well. The removal introduced crashes when a Box was destroyed while its
children were still queueing redraws.
}
static void
+clutter_box_real_destroy (ClutterActor *actor)
+{
+ ClutterActor *iter;
+
+ iter = clutter_actor_get_first_child (actor);
+ while (iter != NULL)
+ {
+ ClutterActor *next = clutter_actor_get_next_sibling (iter);
+
+ clutter_actor_destroy (iter);
+
+ iter = next;
+ }
+}
+
+static void
clutter_box_class_init (ClutterBoxClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (ClutterBoxPrivate));
+ actor_class->destroy = clutter_box_real_destroy;
actor_class->get_paint_volume = clutter_box_real_get_paint_volume;
actor_class->pick = clutter_box_real_pick;