diff --git a/build_files/utils/make_update.py b/build_files/utils/make_update.py index 19caa7caa61..2d46078ff51 100755 --- a/build_files/utils/make_update.py +++ b/build_files/utils/make_update.py @@ -634,7 +634,7 @@ def lfs_fallback_setup(args: argparse.Namespace) -> None: for remote in remotes: url = make_utils.git_get_remote_url(args.git_command, remote) - if "projects.blender.org" not in url: + if "projects.blender.org" not in url and "git.blender.org" not in url: make_utils.git_set_config(args.git_command, f"lfs.{remote}.searchall", "true") else: add_fallback_remote = False diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations_drivers.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations_drivers.cc index 6aff7c1bfd2..95f6e3da410 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations_drivers.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations_drivers.cc @@ -245,12 +245,26 @@ bool data_path_maybe_shared(const ID &id, const StringRef data_path) /* As it is hard to generally detect implicit sharing, this is implemented as * a 'known to not share' list. */ + /* Allow concurrent writes to custom properties. #140706 shows that this + * shouldn't be a problem in practice. */ + if (data_path.startswith("[\"") && data_path.endswith("\"]")) { + return false; + } + if (GS(id.name) == ID_OB) { const Object &ob = *reinterpret_cast(&id); const bool is_thread_safe = (ob.type == OB_ARMATURE && data_path.startswith("pose.bones[")); return !is_thread_safe; } + /* Allow concurrent writes to shapekey values. #140706 shows that this + * shouldn't be a problem in practice. */ + if (GS(id.name) == ID_KE) { + const bool is_thread_safe = data_path.startswith("key_blocks[") && + data_path.endswith("].value"); + return !is_thread_safe; + } + return true; }