diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-02-23 10:22:09 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-02-23 10:22:09 +0300 |
commit | 96c452bdf6ce703c6e6e42b4eae94ca0315b25e8 (patch) | |
tree | d0cc805f41ac2a5090d44f74cb6b999ed374e755 /source/blender/blenkernel/intern/texture.c | |
parent | 7c03ef295b6f6959b23a27f51358cc3797120bb3 (diff) |
Fix T43769: Envmap Texture copy looses image
Diffstat (limited to 'source/blender/blenkernel/intern/texture.c')
-rw-r--r-- | source/blender/blenkernel/intern/texture.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 6c4cbcf9316..3293cca76fe 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -832,8 +832,12 @@ Tex *BKE_texture_copy(Tex *tex) Tex *texn; texn = BKE_libblock_copy(&tex->id); - if (texn->type == TEX_IMAGE) id_us_plus((ID *)texn->ima); - else texn->ima = NULL; + if (BKE_texture_is_image_user(tex)) { + id_us_plus((ID *)texn->ima); + } + else { + texn->ima = NULL; + } if (texn->coba) texn->coba = MEM_dupallocN(texn->coba); if (texn->env) texn->env = BKE_copy_envmap(texn->env); @@ -1604,6 +1608,29 @@ void BKE_free_oceantex(struct OceanTex *ot) MEM_freeN(ot); } +/** + * \returns true if this texture can use its #Texture.ima (even if its NULL) + */ +bool BKE_texture_is_image_user(const struct Tex *tex) +{ + switch (tex->type) { + case TEX_IMAGE: + { + return true; + } + case TEX_ENVMAP: + { + if (tex->env) { + if (tex->env->stype == ENV_LOAD) { + return true; + } + } + break; + } + } + + return false; +} /* ------------------------------------------------------------------------- */ bool BKE_texture_dependsOnTime(const struct Tex *texture) |