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. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to