BKE's modifier_isEnabled: add check on NULL Scene pointer.
authorBastien Montagne <montagne29@wanadoo.fr>
Wed, 24 Jan 2018 10:12:01 +0000 (11:12 +0100)
committerBastien Montagne <montagne29@wanadoo.fr>
Wed, 24 Jan 2018 10:22:35 +0000 (11:22 +0100)
We do not always have that one available, and even without the
isDisabled callback this func is helpful.

Note that this is a bot stupid, only modifier actually needing a valid
Scene pointer here is subsurf... :|

source/blender/blenkernel/intern/modifier.c

index 1e7c3104d1770cacb405fe0c53b26d37c67ce10e..d7a24f90dbe565a002d4d7aaab24520153585009 100644 (file)
@@ -434,6 +434,11 @@ bool modifiers_isParticleEnabled(Object *ob)
        return (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render));
 }
 
+/**
+ * Check whether is enabled.
+ *
+ * \param scene Current scene, may be NULL, in which case isDisabled callback of the modifier is never called.
+ */
 bool modifier_isEnabled(struct Scene *scene, ModifierData *md, int required_mode)
 {
        const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
@@ -441,7 +446,7 @@ bool modifier_isEnabled(struct Scene *scene, ModifierData *md, int required_mode
        md->scene = scene;
 
        if ((md->mode & required_mode) != required_mode) return false;
-       if (mti->isDisabled && mti->isDisabled(md, required_mode == eModifierMode_Render)) return false;
+       if (scene != NULL && mti->isDisabled && mti->isDisabled(md, required_mode == eModifierMode_Render)) return false;
        if (md->mode & eModifierMode_DisableTemporary) return false;
        if ((required_mode & eModifierMode_Editmode) && !(mti->flags & eModifierTypeFlag_SupportsEditmode)) return false;