Revision: 23640
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23640
Author:   blendix
Date:     2009-10-05 19:29:56 +0200 (Mon, 05 Oct 2009)

Log Message:
-----------
VBO:
* Disable use of EditMeshDerivedMesh for VBO drawing in editmode.
  This is crashed when using e.g. subsurf in editmode, as the DM
  is not an EditMeshDerivedMesh.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/drawobject.c

Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawobject.c      
2009-10-05 16:48:52 UTC (rev 23639)
+++ trunk/blender/source/blender/editors/space_view3d/drawobject.c      
2009-10-05 17:29:56 UTC (rev 23640)
@@ -1552,6 +1552,12 @@
                }
        }
 }
+
+/* disabled because it crashes combined with e.g. subsurf modifier,
+ * the derivedmesh can't be assumed to be an EditMeshDerivedMesh,
+ * nor should this struct be copied around, it should be defined in
+ * a single place only to avoid them getting out of sync */
+#if 0
 /* originally defined in DerivedMesh.c */
 typedef struct {
        DerivedMesh dm;
@@ -1561,15 +1567,17 @@
        float (*vertexNos)[3];
        float (*faceNos)[3];
 } EditMeshDerivedMesh;
+#endif
 
 static void draw_dm_verts(DerivedMesh *dm, int sel, EditVert *eve_act)
 {
        struct { int sel; EditVert *eve_act; } data;
-       GPUBuffer *buffer;
-       float *varray;
+       //GPUBuffer *buffer;
+       //float *varray;
        data.sel = sel;
        data.eve_act = eve_act;
 
+#if 0
        /* first come the unselected vertices, then the selected */
        buffer = GPU_buffer_legacy(dm)?0:GPU_buffer_alloc( 
sizeof(float)*3*dm->getNumVerts(dm)*2, 0 );
 
@@ -1612,12 +1620,15 @@
                UI_ThemeColor4(data.sel?TH_VERTEX_SELECT:TH_VERTEX);
                GPU_buffer_unbind();
        }
-       else {
+       {
+#endif
                bglBegin(GL_POINTS);
                dm->foreachMappedVert(dm, draw_dm_verts__mapFunc, &data);
                bglEnd();
+#if 0
        }
        GPU_buffer_free( buffer, 0 );
+#endif
 }
 
        /* Draw edges with color set based on selection */
@@ -1688,15 +1699,14 @@
 
 static void draw_dm_edges_sel_interp(DerivedMesh *dm, unsigned char *baseCol, 
unsigned char *selCol)
 {
-       unsigned char *cols[2];
+       unsigned char *cols[2] = {baseCol, selCol};
+#if 0
        int elemsize = sizeof(float)*3+sizeof(unsigned char)*4;
        EditMeshDerivedMesh *emdm = (EditMeshDerivedMesh *)dm;
        EditMesh *em= emdm->em;
        unsigned char *varray;
        int i;
        GPUBuffer *buffer;
-       cols[0] = baseCol;
-       cols[1] = selCol;
 
        buffer = GPU_buffer_legacy(dm)?0:GPU_buffer_alloc( 
elemsize*em->totedge*2, 0 );
        if( (varray = GPU_buffer_lock_stream( buffer )) ) {
@@ -1733,9 +1743,12 @@
                GPU_buffer_unbind();
        }
        else {
+#endif
                dm->drawMappedEdgesInterp(dm, 
draw_dm_edges_sel_interp__setDrawOptions, 
draw_dm_edges_sel_interp__setDrawInterpOptions, cols);
+#if 0
        }
        GPU_buffer_free( buffer, 0 );
+#endif
 }
 
        /* Draw only seam edges */
@@ -1792,11 +1805,10 @@
        //EditMeshDerivedMesh *emdm = (EditMeshDerivedMesh *)dm;
        EditFace *efa;
        unsigned char *col;
-       unsigned char *colors;
        GPUBuffer *buffer;
        unsigned char *varray;
        unsigned char black[] = { 0, 0, 0, 0 };
-       int i,j,draw=0;
+       int i, draw=0;
        int elemsize = (sizeof(float)*6+sizeof(unsigned char)*4);
        data.cols[0] = baseCol;
        data.cols[1] = selCol;
@@ -4039,7 +4051,6 @@
                glLineWidth(1.0f);
        }
        else if(ELEM(draw_as, 0, PART_DRAW_CIRC)==0){
-               int point_size = 1;
                glDisableClientState(GL_COLOR_ARRAY);
 
                /* enable point data array */


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to