[Bf-blender-cvs] [e6560c1] opensubdiv-modifier: OpenSubdiv: Fix crash when switching object and edit modes
Sergey Sharybin
noreply at git.blender.org
Wed Aug 6 11:17:27 CEST 2014
Commit: e6560c19a1864dff920e9cf7acc3093220fe4be0
Author: Sergey Sharybin
Date: Wed Aug 6 15:09:41 2014 +0600
Branches: opensubdiv-modifier
https://developer.blender.org/rBe6560c19a1864dff920e9cf7acc3093220fe4be0
OpenSubdiv: Fix crash when switching object and edit modes
Crash was caused by by the OpenGL access from the treads.
===================================================================
M source/blender/blenkernel/intern/scene.c
===================================================================
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index ecaaf48..806f8b4 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -1521,17 +1521,24 @@ static void scene_update_objects(EvaluationContext *eval_ctx, Main *bmain, Scene
for (md = object->modifiers.first; md; md = md->next) {
if (md->type == eModifierType_Subsurf) {
SubsurfModifierData *smd = (SubsurfModifierData *) md;
- if (smd->mCache != NULL) {
- bool old_simple =
- ccgSubSurf_getSimpleSubdiv(smd->mCache);
- bool use_simple =
- smd->subdivType == ME_SIMPLE_SUBSURF;
+ bool use_simple = smd->subdivType == ME_SIMPLE_SUBSURF;
- if (old_simple != use_simple) {
+ if (smd->mCache != NULL) {
+ if (object->mode == OB_MODE_EDIT ||
+ ccgSubSurf_getSimpleSubdiv(smd->mCache) != use_simple)
+ {
ccgSubSurf_free(smd->mCache);
smd->mCache = NULL;
}
}
+ if (smd->emCache != NULL) {
+ if (object->mode != OB_MODE_EDIT ||
+ ccgSubSurf_getSimpleSubdiv(smd->emCache) != use_simple)
+ {
+ ccgSubSurf_free(smd->emCache);
+ smd->emCache = NULL;
+ }
+ }
}
}
}
More information about the Bf-blender-cvs
mailing list