Fix #20820: multires subdivide crash.

This commit is contained in:
2010-01-25 21:58:00 +00:00
parent abd9a59af4
commit d440990414
2 changed files with 6 additions and 7 deletions

View File

@@ -85,11 +85,11 @@ MultiresModifierData *find_multires_modifier(Object *ob)
static int multires_get_level(Object *ob, MultiresModifierData *mmd, int render)
{
if(render)
return get_render_subsurf_level(&mmd->modifier.scene->r, mmd->renderlvl);
return (mmd->modifier.scene)? get_render_subsurf_level(&mmd->modifier.scene->r, mmd->renderlvl): mmd->renderlvl;
else if(ob->mode == OB_MODE_SCULPT)
return mmd->sculptlvl;
else
return get_render_subsurf_level(&mmd->modifier.scene->r, mmd->lvl);
return (mmd->modifier.scene)? get_render_subsurf_level(&mmd->modifier.scene->r, mmd->lvl): mmd->lvl;
}
static void multires_set_tot_level(Object *ob, MultiresModifierData *mmd, int lvl)

View File

@@ -2506,7 +2506,7 @@ struct DerivedMesh *subsurf_make_derived_from_derived(
CCGDerivedMesh *result;
if(editMode) {
int levels= get_render_subsurf_level(&smd->modifier.scene->r, smd->levels);
int levels= (smd->modifier.scene)? get_render_subsurf_level(&smd->modifier.scene->r, smd->levels): smd->levels;
smd->emCache = _getSubSurf(smd->emCache, levels, useAging, 0,
useSimple);
@@ -2518,9 +2518,8 @@ struct DerivedMesh *subsurf_make_derived_from_derived(
} else if(useRenderParams) {
/* Do not use cache in render mode. */
CCGSubSurf *ss;
int levels;
levels= get_render_subsurf_level(&smd->modifier.scene->r, smd->renderLevels);
int levels= (smd->modifier.scene)? get_render_subsurf_level(&smd->modifier.scene->r, smd->renderLevels): smd->renderLevels;
if(levels == 0)
return dm;
@@ -2535,7 +2534,7 @@ struct DerivedMesh *subsurf_make_derived_from_derived(
} else {
int useIncremental = (smd->flags & eSubsurfModifierFlag_Incremental);
int useAging = smd->flags & eSubsurfModifierFlag_DebugIncr;
int levels= get_render_subsurf_level(&smd->modifier.scene->r, smd->levels);
int levels= (smd->modifier.scene)? get_render_subsurf_level(&smd->modifier.scene->r, smd->levels): smd->levels;
CCGSubSurf *ss;
/* It is quite possible there is a much better place to do this. It