Fix #35678: Duplicating an object with Displace modifier does not increase the reference count of the texture

This commit is contained in:
Sergey Sharybin 2013-06-10 14:04:03 +00:00
parent 1f7096bb58
commit bfbac9b448

@ -42,6 +42,7 @@
#include "BKE_cdderivedmesh.h"
#include "BKE_library.h"
#include "BKE_modifier.h"
#include "BKE_texture.h"
#include "BKE_deform.h"
@ -79,6 +80,18 @@ static void copyData(ModifierData *md, ModifierData *target)
tdmd->texmapping = dmd->texmapping;
tdmd->map_object = dmd->map_object;
BLI_strncpy(tdmd->uvlayer_name, dmd->uvlayer_name, sizeof(tdmd->uvlayer_name));
if (tdmd->texture) {
id_us_plus(&tdmd->texture->id);
}
}
static void freeData(ModifierData *md)
{
DisplaceModifierData *dmd = (DisplaceModifierData *) md;
if (dmd->texture) {
id_us_min(&dmd->texture->id);
}
}
static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
@ -292,7 +305,7 @@ ModifierTypeInfo modifierType_Displace = {
/* applyModifierEM */ NULL,
/* initData */ initData,
/* requiredDataMask */ requiredDataMask,
/* freeData */ NULL,
/* freeData */ freeData,
/* isDisabled */ isDisabled,
/* updateDepgraph */ updateDepgraph,
/* dependsOnTime */ dependsOnTime,