Revision: 49061
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49061
Author: campbellbarton
Date: 2012-07-19 10:23:25 +0000 (Thu, 19 Jul 2012)
Log Message:
-----------
fix for separate loose parts doing full depsgraph rebuild for every object
split off.
Modified Paths:
--------------
trunk/blender/source/blender/editors/armature/editarmature.c
trunk/blender/source/blender/editors/curve/editcurve.c
trunk/blender/source/blender/editors/mesh/editmesh_tools.c
trunk/blender/source/blender/editors/object/object_add.c
trunk/blender/source/blender/python/generic/py_capi_utils.h
Modified: trunk/blender/source/blender/editors/armature/editarmature.c
===================================================================
--- trunk/blender/source/blender/editors/armature/editarmature.c
2012-07-19 09:55:49 UTC (rev 49060)
+++ trunk/blender/source/blender/editors/armature/editarmature.c
2012-07-19 10:23:25 UTC (rev 49061)
@@ -1213,6 +1213,8 @@
/* 2) duplicate base */
newbase = ED_object_add_duplicate(bmain, scene, oldbase, USER_DUP_ARM);
/* only duplicate linked armature */
+ DAG_scene_sort(bmain, scene);
+
newob = newbase->object;
newbase->flag &= ~SELECT;
Modified: trunk/blender/source/blender/editors/curve/editcurve.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editcurve.c 2012-07-19
09:55:49 UTC (rev 49060)
+++ trunk/blender/source/blender/editors/curve/editcurve.c 2012-07-19
10:23:25 UTC (rev 49061)
@@ -1369,6 +1369,8 @@
/* 1. duplicate the object and data */
newbase = ED_object_add_duplicate(bmain, scene, oldbase, 0); /* 0 =
fully linked */
+ DAG_scene_sort(bmain, scene);
+
ED_base_object_select(newbase, BA_DESELECT);
newob = newbase->object;
Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2012-07-19
09:55:49 UTC (rev 49060)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c 2012-07-19
10:23:25 UTC (rev 49061)
@@ -2815,7 +2815,8 @@
CustomData_bmesh_init_pool(&bm_new->ldata,
bm_mesh_allocsize_default.totloop, BM_LOOP);
CustomData_bmesh_init_pool(&bm_new->pdata,
bm_mesh_allocsize_default.totface, BM_FACE);
- basenew = ED_object_add_duplicate(bmain, scene, editbase,
USER_DUP_MESH); /* 0 = fully linked */
+ basenew = ED_object_add_duplicate(bmain, scene, editbase,
USER_DUP_MESH);
+ /* DAG_scene_sort(bmain, scene); */ /* normally would call directly
after but in this case delay recalc */
assign_matarar(basenew->object, give_matarar(obedit),
*give_totcolp(obedit)); /* new in 2.5 */
ED_base_object_select(basenew, BA_DESELECT);
@@ -2968,6 +2969,10 @@
if (retval) {
BMEditMesh *em = BMEdit_FromObject(base->object);
+
+ /* delay depsgraph recalc until all objects are duplicated */
+ DAG_scene_sort(bmain, scene);
+
EDBM_update_generic(C, em, TRUE);
return OPERATOR_FINISHED;
Modified: trunk/blender/source/blender/editors/object/object_add.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_add.c 2012-07-19
09:55:49 UTC (rev 49060)
+++ trunk/blender/source/blender/editors/object/object_add.c 2012-07-19
10:23:25 UTC (rev 49061)
@@ -1854,7 +1854,9 @@
/* single object duplicate, if dupflag==0, fully linked, else it uses the
flags given */
/* leaves selection of base/object unaltered.
- * note: don't call this within a loop since clear_* funcs loop over the
entire database. */
+ * note: don't call this within a loop since clear_* funcs loop over the
entire database.
+ * note: caller must do DAG_scene_sort(bmain, scene);
+ * this is not done automatic since we may duplicate many objects in a
batch */
Base *ED_object_add_duplicate(Main *bmain, Scene *scene, Base *base, int
dupflag)
{
Base *basen;
@@ -1874,7 +1876,8 @@
BKE_object_relink(ob);
set_sca_new_poins_ob(ob);
- DAG_scene_sort(bmain, scene);
+ /* DAG_scene_sort(bmain, scene); */ /* caller must do */
+
if (ob->data) {
ED_render_id_flush_update(bmain, ob->data);
}
Modified: trunk/blender/source/blender/python/generic/py_capi_utils.h
===================================================================
--- trunk/blender/source/blender/python/generic/py_capi_utils.h 2012-07-19
09:55:49 UTC (rev 49060)
+++ trunk/blender/source/blender/python/generic/py_capi_utils.h 2012-07-19
10:23:25 UTC (rev 49061)
@@ -24,12 +24,13 @@
* \ingroup pygen
*/
-
+
#ifndef __PY_CAPI_UTILS_H__
#define __PY_CAPI_UTILS_H__
void PyC_ObSpit(const char *name, PyObject *var);
void PyC_LineSpit(void);
+void PyC_StackSpit(void);
PyObject * PyC_ExceptionBuffer(void);
PyObject * PyC_Object_GetAttrStringArgs(PyObject *o, Py_ssize_t n,
...);
PyObject * PyC_Err_Format_Prefix(PyObject *exception_type_prefix,
const char *format, ...);
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs