[Bf-blender-cvs] [640f011] opensubdiv-modifier: OpenSubdiv: Fix crash entering sculpt mode
Sergey Sharybin
noreply at git.blender.org
Wed Jul 30 19:13:35 CEST 2014
Commit: 640f01167cafdb5e9da3b97288567082b898bb99
Author: Sergey Sharybin
Date: Wed Jul 30 23:13:19 2014 +0600
Branches: opensubdiv-modifier
https://developer.blender.org/rB640f01167cafdb5e9da3b97288567082b898bb99
OpenSubdiv: Fix crash entering sculpt mode
===================================================================
M source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index 4811362..0e8cb69 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -1794,12 +1794,26 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm,
int i, totface = ccgSubSurf_getNumFaces(ss);
int drawcurrent = 0, matnr = -1, shademodel = -1;
+ CCG_key_top_level(&key, ss);
+ ccgdm_pbvh_update(ccgdm);
+
+ if (ccgdm->pbvh && ccgdm->multires.mmd && !fast) {
+ if (dm->numTessFaceData) {
+ BKE_pbvh_draw(ccgdm->pbvh, partial_redraw_planes, NULL,
+ setMaterial, false);
+ glShadeModel(GL_FLAT);
+ }
+
+ return;
+ }
+
+
#ifdef WITH_OPENSUBDIV
if (ccgdm->useGpuBackend) {
int i, matnr = -1, shademodel = -1;
CCGFaceIterator *fi;
int start_partition = 0, num_partitions = 0;
- if (UNLIKELY(ccgSubSurf_prepareGLMesh(ss, true) == false)) {
+ if (UNLIKELY(ccgSubSurf_prepareGLMesh(ss, setMaterial != NULL) == false)) {
return;
}
@@ -1833,7 +1847,7 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm,
/* Update material settings for the next partitions batch. */
glShadeModel(new_shademodel);
- if (new_matnr != matnr) {
+ if (new_matnr != matnr && setMaterial) {
setMaterial(new_matnr + 1, NULL);
}
@@ -1856,19 +1870,6 @@ static void ccgDM_drawFacesSolid(DerivedMesh *dm,
}
#endif
- CCG_key_top_level(&key, ss);
- ccgdm_pbvh_update(ccgdm);
-
- if (ccgdm->pbvh && ccgdm->multires.mmd && !fast) {
- if (dm->numTessFaceData) {
- BKE_pbvh_draw(ccgdm->pbvh, partial_redraw_planes, NULL,
- setMaterial, false);
- glShadeModel(GL_FLAT);
- }
-
- return;
- }
-
for (i = 0; i < totface; i++) {
CCGFace *f = ccgdm->faceMap[i].face;
int S, x, y, numVerts = ccgSubSurf_getFaceNumVerts(f);
More information about the Bf-blender-cvs
mailing list