[Bf-blender-cvs] [86da0f47498] fracture_modifier: Merge remote-tracking branch 'refs/remotes/origin/blender-v2.79-release' into fracture_modifier

Martin Felke noreply at git.blender.org
Sat Aug 12 22:52:22 CEST 2017


Commit: 86da0f47498fad104421aa99a285e163017ab083
Author: Martin Felke
Date:   Sat Aug 12 22:48:17 2017 +0200
Branches: fracture_modifier
https://developer.blender.org/rB86da0f47498fad104421aa99a285e163017ab083

Merge remote-tracking branch 'refs/remotes/origin/blender-v2.79-release' into fracture_modifier

Conflicts:
	build_files/buildbot/slave_compile.py
	build_files/cmake/buildinfo.cmake
	build_files/cmake/config/blender_release.cmake
	build_files/cmake/macros.cmake
	build_files/cmake/packaging.cmake
	build_files/cmake/platform/platform_win32_msvc.cmake
	doc/python_api/sphinx_doc_gen.py
	doc/python_api/sphinx_doc_update.py
	intern/atomic/atomic_ops.h
	intern/atomic/intern/atomic_ops_ext.h
	intern/atomic/intern/atomic_ops_unix.h
	intern/cycles/CMakeLists.txt
	intern/cycles/blender/addon/properties.py
	intern/cycles/blender/addon/ui.py
	intern/cycles/blender/blender_mesh.cpp
	intern/cycles/blender/blender_object.cpp
	intern/cycles/blender/blender_object_cull.cpp
	intern/cycles/blender/blender_object_cull.h
	intern/cycles/blender/blender_python.cpp
	intern/cycles/blender/blender_session.cpp
	intern/cycles/blender/blender_session.h
	intern/cycles/blender/blender_shader.cpp
	intern/cycles/blender/blender_util.h
	intern/cycles/bvh/bvh.cpp
	intern/cycles/bvh/bvh.h
	intern/cycles/bvh/bvh_build.cpp
	intern/cycles/bvh/bvh_node.h
	intern/cycles/device/device.cpp
	intern/cycles/device/device.h
	intern/cycles/device/device_cpu.cpp
	intern/cycles/device/device_cuda.cpp
	intern/cycles/device/device_opencl.cpp
	intern/cycles/device/device_task.cpp
	intern/cycles/device/opencl/opencl.h
	intern/cycles/device/opencl/opencl_base.cpp
	intern/cycles/device/opencl/opencl_mega.cpp
	intern/cycles/device/opencl/opencl_split.cpp
	intern/cycles/device/opencl/opencl_util.cpp
	intern/cycles/kernel/bvh/bvh.h
	intern/cycles/kernel/bvh/bvh_nodes.h
	intern/cycles/kernel/bvh/bvh_shadow_all.h
	intern/cycles/kernel/bvh/bvh_volume_all.h
	intern/cycles/kernel/bvh/qbvh_shadow_all.h
	intern/cycles/kernel/bvh/qbvh_subsurface.h
	intern/cycles/kernel/bvh/qbvh_traversal.h
	intern/cycles/kernel/bvh/qbvh_volume.h
	intern/cycles/kernel/bvh/qbvh_volume_all.h
	intern/cycles/kernel/closure/bsdf.h
	intern/cycles/kernel/closure/bsdf_microfacet.h
	intern/cycles/kernel/closure/bsdf_microfacet_multi.h
	intern/cycles/kernel/closure/bsdf_microfacet_multi_impl.h
	intern/cycles/kernel/geom/geom.h
	intern/cycles/kernel/geom/geom_curve.h
	intern/cycles/kernel/geom/geom_motion_curve.h
	intern/cycles/kernel/geom/geom_motion_triangle_intersect.h
	intern/cycles/kernel/geom/geom_motion_triangle_shader.h
	intern/cycles/kernel/geom/geom_object.h
	intern/cycles/kernel/geom/geom_triangle.h
	intern/cycles/kernel/geom/geom_triangle_intersect.h
	intern/cycles/kernel/geom/geom_volume.h
	intern/cycles/kernel/kernel_accumulate.h
	intern/cycles/kernel/kernel_bake.h
	intern/cycles/kernel/kernel_compat_cpu.h
	intern/cycles/kernel/kernel_compat_cuda.h
	intern/cycles/kernel/kernel_emission.h
	intern/cycles/kernel/kernel_image_opencl.h
	intern/cycles/kernel/kernel_light.h
	intern/cycles/kernel/kernel_passes.h
	intern/cycles/kernel/kernel_path.h
	intern/cycles/kernel/kernel_path_branched.h
	intern/cycles/kernel/kernel_path_common.h
	intern/cycles/kernel/kernel_path_surface.h
	intern/cycles/kernel/kernel_path_volume.h
	intern/cycles/kernel/kernel_random.h
	intern/cycles/kernel/kernel_shader.h
	intern/cycles/kernel/kernel_shadow.h
	intern/cycles/kernel/kernel_subsurface.h
	intern/cycles/kernel/kernel_textures.h
	intern/cycles/kernel/kernel_types.h
	intern/cycles/kernel/kernel_volume.h
	intern/cycles/kernel/kernels/cpu/kernel_avx.cpp
	intern/cycles/kernel/kernels/cpu/kernel_avx2.cpp
	intern/cycles/kernel/kernels/opencl/kernel.cl
	intern/cycles/kernel/split/kernel_background_buffer_update.h
	intern/cycles/kernel/split/kernel_data_init.h
	intern/cycles/kernel/split/kernel_direct_lighting.h
	intern/cycles/kernel/split/kernel_holdout_emission_blurring_pathtermination_ao.h
	intern/cycles/kernel/split/kernel_next_iteration_setup.h
	intern/cycles/kernel/split/kernel_scene_intersect.h
	intern/cycles/kernel/split/kernel_split_common.h
	intern/cycles/kernel/svm/svm_displace.h
	intern/cycles/kernel/svm/svm_image.h
	intern/cycles/kernel/svm/svm_tex_coord.h
	intern/cycles/render/buffers.cpp
	intern/cycles/render/graph.cpp
	intern/cycles/render/graph.h
	intern/cycles/render/image.cpp
	intern/cycles/render/image.h
	intern/cycles/render/mesh_subdivision.cpp
	intern/cycles/render/osl.cpp
	intern/cycles/render/session.cpp
	intern/cycles/render/session.h
	intern/cycles/render/svm.cpp
	intern/cycles/render/svm.h
	intern/cycles/render/tile.cpp
	intern/cycles/render/tile.h
	intern/cycles/util/util_atomic.h
	intern/cycles/util/util_boundbox.h
	intern/cycles/util/util_half.h
	intern/cycles/util/util_image.h
	intern/cycles/util/util_image_impl.h
	intern/cycles/util/util_math.h
	intern/cycles/util/util_path.cpp
	intern/cycles/util/util_progress.h
	intern/cycles/util/util_simd.h
	intern/cycles/util/util_task.cpp
	intern/cycles/util/util_types.h
	intern/ghost/intern/GHOST_SystemCocoa.mm
	make.bat
	release/datafiles/locale
	release/scripts/addons
	release/scripts/presets/interface_theme/24x_blues.xml
	release/scripts/presets/interface_theme/flatty_light.xml
	release/scripts/startup/bl_operators/wm.py
	release/scripts/startup/bl_ui/space_userpref.py
	source/blender/blenkernel/BKE_library_query.h
	source/blender/blenkernel/BKE_sca.h
	source/blender/blenkernel/intern/DerivedMesh.c
	source/blender/blenkernel/intern/armature.c
	source/blender/blenkernel/intern/library.c
	source/blender/blenkernel/intern/library_query.c
	source/blender/blenkernel/intern/mesh.c
	source/blender/blenkernel/intern/rigidbody.c
	source/blender/blenkernel/intern/sca.c
	source/blender/blenkernel/intern/subsurf_ccg.c
	source/blender/blenlib/intern/task.c
	source/blender/blenloader/intern/readfile.c
	source/blender/blenloader/intern/versioning_270.c
	source/blender/blenloader/intern/writefile.c
	source/blender/collada/ArmatureImporter.cpp
	source/blender/depsgraph/DEG_depsgraph_build.h
	source/blender/depsgraph/intern/builder/deg_builder.cc
	source/blender/depsgraph/intern/builder/deg_builder_cycle.cc
	source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
	source/blender/depsgraph/intern/builder/deg_builder_nodes.h
	source/blender/depsgraph/intern/builder/deg_builder_nodes_rig.cc
	source/blender/depsgraph/intern/builder/deg_builder_nodes_scene.cc
	source/blender/depsgraph/intern/builder/deg_builder_relations.cc
	source/blender/depsgraph/intern/builder/deg_builder_relations.h
	source/blender/depsgraph/intern/builder/deg_builder_relations_keys.cc
	source/blender/depsgraph/intern/builder/deg_builder_relations_rig.cc
	source/blender/depsgraph/intern/builder/deg_builder_relations_scene.cc
	source/blender/depsgraph/intern/debug/deg_debug_graphviz.cc
	source/blender/depsgraph/intern/depsgraph.h
	source/blender/depsgraph/intern/depsgraph_build.cc
	source/blender/depsgraph/intern/depsgraph_eval.cc
	source/blender/depsgraph/intern/eval/deg_eval.cc
	source/blender/depsgraph/intern/eval/deg_eval_debug.cc
	source/blender/depsgraph/intern/nodes/deg_node.cc
	source/blender/depsgraph/intern/nodes/deg_node.h
	source/blender/depsgraph/intern/nodes/deg_node_component.cc
	source/blender/depsgraph/intern/nodes/deg_node_component.h
	source/blender/depsgraph/intern/nodes/deg_node_operation.cc
	source/blender/depsgraph/util/deg_util_foreach.h
	source/blender/editors/animation/anim_channels_defines.c
	source/blender/editors/animation/anim_draw.c
	source/blender/editors/armature/pose_transform.c
	source/blender/editors/interface/interface_layout.c
	source/blender/editors/object/object_modifier.c
	source/blender/editors/space_outliner/outliner_edit.c
	source/blender/editors/transform/transform_snap_object.c
	source/blender/gpu/shaders/gpu_shader_material.glsl
	source/blender/makesdna/DNA_ID.h
	source/blender/makesdna/DNA_modifier_types.h
	source/blender/makesdna/DNA_rigidbody_types.h
	source/blender/makesdna/DNA_userdef_types.h
	source/blender/makesrna/intern/rna_ID.c
	source/blender/makesrna/intern/rna_main.c
	source/blender/makesrna/intern/rna_main_api.c
	source/blender/makesrna/intern/rna_mesh_api.c
	source/blender/makesrna/intern/rna_modifier.c
	source/blender/makesrna/intern/rna_render.c
	source/blender/makesrna/intern/rna_rigidbody.c
	source/blender/makesrna/intern/rna_userdef.c
	source/blender/makesrna/intern/rna_wm_api.c
	source/blender/modifiers/MOD_modifiertypes.h
	source/blender/modifiers/intern/MOD_boolean.c
	source/blender/modifiers/intern/MOD_normal_edit.c
	source/blender/modifiers/intern/MOD_util.c
	source/blender/nodes/shader/nodes/node_shader_tex_brick.c
	source/blender/python/intern/bpy_rna_id_collection.c
	source/blender/render/extern/include/RE_pipeline.h
	source/blender/render/intern/source/render_result.c
	source/creator/CMakeLists.txt
	tests/gtests/CMakeLists.txt
	tests/gtests/blenlib/BLI_string_test.cc
	tests/python/CMakeLists.txt

===================================================================



===================================================================

diff --cc extern/CMakeLists.txt
index efe553fa375,f7e98525b8b..f040dc67aa4
--- a/extern/CMakeLists.txt
+++ b/extern/CMakeLists.txt
@@@ -103,9 -99,10 +103,11 @@@ if(WITH_LIBMV
  endif()
  
  if(WITH_LIBMV OR WITH_GTESTS OR (WITH_CYCLES AND WITH_CYCLES_LOGGING))
- 	add_subdirectory(gflags)
+ 	if (NOT WITH_SYSTEM_GFLAGS)
+ 		add_subdirectory(gflags)
+ 	endif()
  	add_subdirectory(glog)
 +	
  endif()
  
  if(WITH_GTESTS)
diff --cc intern/cycles/bvh/bvh_node.cpp
index 67580e1bc7b,4237c62ab5b..048f9e987dd
--- a/intern/cycles/bvh/bvh_node.cpp
+++ b/intern/cycles/bvh/bvh_node.cpp
@@@ -170,25 -171,25 +171,38 @@@ uint BVHNode::update_visibility(
  		BVHNode *child0 = inner->children[0];
  		BVHNode *child1 = inner->children[1];
  
- 		m_visibility = child0->update_visibility()|child1->update_visibility();
+ 		visibility = child0->update_visibility()|child1->update_visibility();
  	}
  
- 	return m_visibility;
+ 	return visibility;
+ }
+ 
+ void BVHNode::update_time()
+ {
+ 	if(!is_leaf()) {
+ 		InnerNode *inner = (InnerNode*)this;
+ 		BVHNode *child0 = inner->children[0];
+ 		BVHNode *child1 = inner->children[1];
+ 		child0->update_time();
+ 		child1->update_time();
+ 		time_from = min(child0->time_from, child1->time_from);
+ 		time_to =  max(child0->time_to, child1->time_to);
+ 	}
  }
  
 +void BVHNode::update_time()
 +{
 +	if(!is_leaf()) {
 +		InnerNode *inner = (InnerNode*)this;
 +		BVHNode *child0 = inner->children[0];
 +		BVHNode *child1 = inner->children[1];
 +		child0->update_time();
 +		child1->update_time();
 +		m_time_from = min(child0->m_time_from, child1->m_time_from);
 +		m_time_to =  max(child0->m_time_to, child1->m_time_to);
 +	}
 +}
 +
  /* Inner Node */
  
  void InnerNode::print(int depth) const
diff --cc release/scripts/startup/bl_operators/presets.py
index fb9fe0e8b7d,fdacf24f6e0..d4f5639fd76
--- a/release/scripts/startup/bl_operators/presets.py
+++ b/release/scripts/startup/bl_operators/presets.py
@@@ -784,3 -680,26 +784,26 @@@ class AddPresetUnitsLength(AddPresetBas
      ]
  
      preset_subdir = "units_length"
+ 
+ 
+ classes = (
+     AddPresetCamera,
+     AddPresetCloth,
+     AddPresetFluid,
+     AddPresetHairDynamics,
+     AddPresetInteraction,
+     AddPresetInterfaceTheme,
+     AddPresetKeyconfig,
+     AddPresetNodeColor,
+     AddPresetOperator,
+     AddPresetRender,
+     AddPresetSSS,
+     AddPresetSafeAreas,
+     AddPresetSunSky,
+     AddPresetTrackingCamera,
+     AddPresetTrackingSettings,
+     AddPresetTrackingTrackColor,
+     AddPresetUnitsLength,
+     ExecutePreset,
+     WM_MT_operator_presets,
 -)
++)
diff --cc source/blender/blenkernel/intern/rigidbody.c
index 99a60f2a6ae,e8c0cf53d0b..51117551a3e
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@@ -50,9 -46,8 +50,10 @@@
  #  include "RBI_api.h"
  #endif
  
 +#include "DNA_fracture_types.h"
+ #include "DNA_ID.h"
  #include "DNA_group_types.h"
 +#include "DNA_mesh_types.h"
  #include "DNA_meshdata_types.h"
  #include "DNA_object_types.h"
  #include "DNA_object_force.h"
@@@ -882,35 -974,15 +898,35 @@@ void BKE_rigidbody_world_groups_relink(
  
  void BKE_rigidbody_world_id_loop(RigidBodyWorld *rbw, RigidbodyWorldIDFunc func, void *userdata)
  {
 +	GroupObject *go;
 +
- 	func(rbw, (ID **)&rbw->group, userdata, IDWALK_NOP);
- 	func(rbw, (ID **)&rbw->constraints, userdata, IDWALK_NOP);
- 	func(rbw, (ID **)&rbw->effector_weights->group, userdata, IDWALK_NOP);
+ 	func(rbw, (ID **)&rbw->group, userdata, IDWALK_CB_NOP);
+ 	func(rbw, (ID **)&rbw->constraints, userdata, IDWALK_CB_NOP);
+ 	func(rbw, (ID **)&rbw->effector_weights->group, userdata, IDWALK_CB_NOP);
  
 +	/* in regular blender one rigidbody is equivalent to one object, but in FM build you can have more
 +	 * rigidbodies in the world than objects in the object array... thats why loop over the group of objects
 +	 * of the rigidbody world... the rbw->objects array would contain group objects only anyway, also dont forget
 +	 * regular constraints if there are any */
 +
 +	/*
  	if (rbw->objects) {
  		int i;
  		for (i = 0; i < rbw->numbodies; i++) {
- 			func(rbw, (ID **)&rbw->objects[i], userdata, IDWALK_NOP);
+ 			func(rbw, (ID **)&rbw->objects[i], userdata, IDWALK_CB_NOP);
  		}
 +	}*/
 +
 +	if (rbw->group) {
 +		for (go = rbw->group->gobject.first; go; go = go->next) {
 +			func(rbw, (ID **)&go->ob, userdata, IDWALK_NOP);
 +		}
 +	}
 +
 +	if (rbw->constraints) {
 +		for (go = rbw->constraints->gobject.first; go; go = go->next) {
 +			func(rbw, (ID **)&go->ob, userdata, IDWALK_NOP);
 +		}
  	}
  }
  
@@@ -1961,38 -1482,61 +1983,72 @@@ void BKE_rigidbody_sync_transforms(Rigi
  	}
  }
  
 -/* Used when canceling transforms - return rigidbody and object to initial states */
 -void BKE_rigidbody_aftertrans_update(Object *ob, float loc[3], float rot[3], float quat[4], float rotAxis[3], float rotAngle)
 +static void do_reset_rigidbody(RigidBodyOb *rbo, Object *ob, MeshIsland* mi, float loc[3],
 +                              float rot[3], float quat[4], float rotAxis[3], float rotAngle)
  {
+ 	RigidBodyOb *rbo = ob->rigidbody_object;
+ 	bool correct_delta = !(rbo->flag & RBO_FLAG_KINEMATIC || rbo->type == RBO_TYPE_PASSIVE);
+ 
  	/* return rigid body and object to their initial states */
  	copy_v3_v3(rbo->pos, ob->loc);
 +	if (mi)
 +		add_v3_v3(rbo->pos, mi->centroid);
  	copy_v3_v3(ob->loc, loc);
  
+ 	if (correct_delta) {
+ 		add_v3_v3(rbo->pos, ob->dloc);
+ 	}
+ 
  	if (ob->rotmode > 0) {
- 		eulO_to_quat(rbo->orn, ob->rot, ob->rotmode);
+ 		float qt[4];
+ 		eulO_to_quat(qt, ob->rot, ob->rotmode);
+ 
+ 		if (correct_delta) {
+ 			float dquat[4];
+ 			eulO_to_quat(dquat, ob->drot, ob->rotmode);
+ 
+ 			mul_qt_qtqt(rbo->orn, dquat, qt);
+ 		}
+ 		else {
+ 			copy_qt_qt(rbo->orn, qt);
+ 		}
  
 +		if (mi)
- 			mul_qt_qtqt(rbo->orn, rbo->orn, mi->rot);
++			mul_qt_qtqt(rbo->orn, qt, mi->rot);
 +
  		copy_v3_v3(ob->rot, rot);
  	}
  	else if (ob->rotmode == ROT_MODE_AXISANGLE) {
- 		axis_angle_to_quat(rbo->orn, ob->rotAxis, ob->rotAngle);
+ 		float qt[4];
+ 		axis_angle_to_quat(qt, ob->rotAxis, ob->rotAngle);
+ 
+ 		if (correct_delta) {
+ 			float dquat[4];
+ 			axis_angle_to_quat(dquat, ob->drotAxis, ob->drotAngle);
+ 
+ 			mul_qt_qtqt(rbo->orn, dquat, qt);
+ 		}
+ 		else {
+ 			copy_qt_qt(rbo->orn, qt);
+ 		}
  
 +		if (mi)
- 			mul_qt_qtqt(rbo->orn, rbo->orn, mi->rot);
++			mul_qt_qtqt(rbo->orn, qt, mi->rot);
 +
  		copy_v3_v3(ob->rotAxis, rotAxis);
  		ob->rotAngle = rotAngle;
  	}
  	else {
- 		copy_qt_qt(rbo->orn, ob->quat);
+ 		if (correct_delta) {
+ 			mul_qt_qtqt(rbo->orn, ob->dquat, ob->quat);
+ 		}
+ 		else {
+ 			copy_qt_qt(rbo->orn, ob->quat);
+ 		}
  
 +		if (mi)
- 			mul_qt_qtqt(rbo->orn, rbo->orn, mi->rot);
++			mul_qt_qtqt(rbo->orn, qt, mi->rot);
 +
  		copy_qt_qt(ob->quat, quat);
  	}
  
@@@ -2122,40 -1600,8 +2178,40 @@@ void BKE_rigidbody_do_simulation(Scene 
  	BKE_ptcache_id_time(&pid, scene, ctime, &startframe, &endframe, NULL);
  	cache = rbw->pointcache;
  
 +	/*trigger dynamic update*/
 +	if (rbw->flag & RBW_FLAG_OBJECT_CHANGED)
 +	{
 +		rbw->flag &= ~RBW_FLAG_OBJECT_CHANGED;
 +		was_changed = rbw->flag & RBW_FLAG_REFRESH_MODIFIERS;
 +		rbw->flag &= ~RBW_FLAG_REFRESH_MODIFIERS;
 +		//if (!(cache->flag & PTCACHE_BAKED))
 +		{
 +			bool baked = cache->flag & PTCACHE_BAKED;
 +			bool from_cache = cache->last_exact > cache->simframe;
 +			if ((from_cache || baked) && ctime > startframe + 1)
 +			{
 +				/* dont mess with baked data */
 +				rigidbody_update_simulation(scene, rbw, true);
 +			}
 +		}
 +		//rbw->flag &= ~RBW_FLAG_REFRESH_MODIFIERS;
 +	}
 +
 +	if (ctime <= startframe) {
 +		/* rebuild constraints */
 +		rbw->flag |= RBW_FLAG_REBUILD_CONSTRAINTS;
 +
 +		rbw->ltime = startframe;
 +		if (rbw->flag & RBW_FLAG_OBJECT_CHANGED)
 +		{       /* flag modifier refresh at their next execution XXX TODO -> still used ? */
 +			rbw->flag |= RBW_FLAG_REFRESH_MODIFIERS;
 +			rbw->flag &= ~RBW_FLAG_OBJECT_CHANGED;
 +			rigidbody_update_simulation(scene, rbw, true);
 +		}
 +		return;
 +	}
  	/* make sure we don't go out of cache frame range */
- 	else if (ctime > endframe) {
+ 	if (ctime > endframe) {
  		ctime = endframe;
  	}
  
@@@ -2177,21 -1615,14 +2233,25 @@@
  	// RB_TODO deal with interpolated, old and baked results
  	bool can_simulate = (ctime == rbw->ltime + 1) && !(cache->flag & PTCACHE_BAKED);
  
+ 	if (cache->flag & PTCACHE_OUTDATED || cache->last_exact == 0) {
+ 		rbw->ltime = cache->startframe;
+ 	}
+ 
  	if (BKE_ptcache_read(&pid, ctime, can_simulate)) {
  		BKE_ptcache_validate(cache, (int)ctime);
 +
 +		rbw->ltime = ctime;
 +
  		return;
  	}
 +	else if (rbw->ltime == startframe)
 +	{
 +		/*bool did_it = */restoreKinematic(rbw);
 +		//if (did_it)
 +
 +		//make 1st run like later runs... hack...
 +		rigidbody_update_simulation(scene, rbw, true);
 +	}
  
  	/* advance simulation, we can only step one frame forward */
  	if (can_simulate) {
diff --cc source/blender/blenloader/intern/readfile.c
index 64c49f01d69,f224f0b5633..78df9d00501
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@@ -9110,9 -8713,19 +9252,21 @@@ BlendFileData *blo_read_file_internal(F
  	
  	lib_link_all(fd, bfd->main);
  
 +	fix_fracture_image_hack(bfd->main);
 +
- 	//do_versions_after_linking(fd, NULL, bfd->main); // XXX: not here (or even in this function at all)! this causes crashes on many files - Aligorith (July 04, 2010)
+ 	/* Skip in undo case. */
+ 	if (fd->memfile == NULL) {
+ 		/* Yep, second splitting... but this is a very cheap operation, so no big deal. */
+ 		blo_split_main(&mainlist, bfd->main);
+ 		for (Main *mainvar = mainlist.first; mainvar; mainvar = mainvar->next) {
+ 			BLI_assert(mainvar->versionfile != 0);
+ 			do_versions_after_linking(mainvar);
+ 		}
+ 		blo_join_main(&mainlist);
+ 	}
+ 
+ 	BKE_main_id_tag_all(bfd->main, LIB_TAG_NEW, false);
+ 
  	lib_verify_nodetree(bfd->main, true);
  	fix_relpaths_library(fd->relabase, bfd->main); /* make all relative paths, relative to the open blend file */
  	
diff --cc source/blender/blenloader/intern/writefile.c
index 631f01241ba,ee9665dc834..4439cf99ad0
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloa

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list