diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-12-06 16:06:49 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-12-06 16:06:49 +0300 |
commit | 46f518e92790a04885f4e047bb59b11019d73aa3 (patch) | |
tree | d893b5be0dd0fc2b361152b84a07d6e33ab74a2b /source/blender/blenkernel | |
parent | 6c49b4154b16aa7a3b867c561cc233ce5cdb9cb4 (diff) | |
parent | 13e9291650f2f8c8c71fa13d5cc2c4fb7938cd05 (diff) |
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_library.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/library.c | 4 |
2 files changed, 5 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_library.h b/source/blender/blenkernel/BKE_library.h index 468aab9bdf9..0abf99415c7 100644 --- a/source/blender/blenkernel/BKE_library.h +++ b/source/blender/blenkernel/BKE_library.h @@ -77,6 +77,7 @@ enum { LIB_ID_COPY_CACHES = 1 << 18, /* Copy runtime data caches. */ /* XXX TODO Do we want to keep that? would rather try to get rid of it... */ LIB_ID_COPY_ACTIONS = 1 << 19, /* EXCEPTION! Deep-copy actions used by animdata of copied ID. */ + LIB_ID_COPY_KEEP_LIB = 1 << 20, /* Keep the library pointer when copying datablock outside of bmain. */ }; void BKE_libblock_copy_ex(struct Main *bmain, const struct ID *id, struct ID **r_newid, const int flag); diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 0b4ec679f06..0ef1fe52994 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -675,8 +675,12 @@ bool BKE_id_copy_ex(Main *bmain, const ID *id, ID **r_newid, const int flag, con /* Do not make new copy local in case we are copying outside of main... * XXX TODO: is this behavior OK, or should we need own flag to control that? */ if ((flag & LIB_ID_CREATE_NO_MAIN) == 0) { + BLI_assert((flag & LIB_ID_COPY_KEEP_LIB) == 0); BKE_id_copy_ensure_local(bmain, id, *r_newid); } + else { + (*r_newid)->lib = id->lib; + } return true; } |