Fix for dupli-groups update going wrong
authorSergey Sharybin <sergey.vfx@gmail.com>
Tue, 2 Jul 2013 19:23:23 +0000 (19:23 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Tue, 2 Jul 2013 19:23:23 +0000 (19:23 +0000)
commit7c7a3f7879c426451557a1076d2c91711da0c24e
tree417daefe3b21e46796d5a95b6f4aaf48fcd3a9ab
parente4f7260bace919fe0be2218181a85020c29cdcbd
Fix for dupli-groups update going wrong

Dupli-groups used to have special case for updating
which is BKE_group_handle_recalc_and_update. This
function calls BKE_object_handle_update for every
object in the group.

This isn't thread-safe, because object could be
updating in separate thread already. And what's
worse dependencies are not known for objects inside
the group, which makes it impossible to schedule
objects from the group in a safe way.

It's even impossible to schedule groups as different
tasks, because groups could share the same objects.

For now used simple but robust solution which is
updating dupli-groups in main thread, handling
groups one-by-one and updating objects from the
group one-by-one as well.

Will work on a proper solution for this later.
source/blender/blenkernel/intern/scene.c