Revision: 22362
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22362
Author:   imbusy
Date:     2009-08-11 07:31:41 +0200 (Tue, 11 Aug 2009)

Log Message:
-----------
fixed another subsurf bug

Modified Paths:
--------------
    branches/soc-2009-imbusy/source/blender/editors/space_view3d/drawobject.c
    branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c

Modified: 
branches/soc-2009-imbusy/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/soc-2009-imbusy/source/blender/editors/space_view3d/drawobject.c   
2009-08-11 02:27:25 UTC (rev 22361)
+++ branches/soc-2009-imbusy/source/blender/editors/space_view3d/drawobject.c   
2009-08-11 05:31:41 UTC (rev 22362)
@@ -1765,7 +1765,7 @@
 static void draw_dm_faces_sel(DerivedMesh *dm, unsigned char *baseCol, 
unsigned char *selCol, unsigned char *actCol, EditFace *efa_act) 
 {
        struct { unsigned char *cols[3]; EditFace *efa_act; } data;
-       EditMeshDerivedMesh *emdm = (EditMeshDerivedMesh *)dm;
+       //EditMeshDerivedMesh *emdm = (EditMeshDerivedMesh *)dm;
        EditFace *efa;
        unsigned char *col;
        unsigned char *colors;
@@ -1780,8 +1780,8 @@
        data.efa_act = efa_act;
 
 
-       buffer = GPU_buffer_alloc( elemsize*emdm->em->totface*3*2, 0 );
-       if( (varray = GPU_buffer_lock_stream( buffer )) ) {
+       buffer = GPU_buffer_alloc( elemsize*dm->getNumFaces(dm)*3*2, 0 );
+       if( dm->getVertCos == 0 && (varray = GPU_buffer_lock_stream( buffer )) 
) {
                int prevdraw = 0;
                int numfaces = 0;
                int datatype[] = { GPU_BUFFER_INTER_V3F, GPU_BUFFER_INTER_N3F, 
GPU_BUFFER_INTER_C4UB, GPU_BUFFER_INTER_END };
@@ -1789,7 +1789,7 @@
                GPU_interleaved_setup( buffer, datatype );
                glShadeModel(GL_SMOOTH);
                GPU_buffer_lock_stream( buffer );
-               for (i=0,efa= emdm->em->faces.first; efa; i++,efa= efa->next) {
+               for (i=0,efa= efa_act; efa; i++,efa= efa->next) {
                        int drawSmooth = (efa->flag & ME_SMOOTH);
                        if (efa->h==0) {
                                if (efa == data.efa_act) {
@@ -1819,7 +1819,7 @@
 
                        if( draw != 0 ) {
                                if(!drawSmooth) {
-                                       if (emdm->vertexCos) {
+                                       /*if (emdm->vertexCos) {
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces],emdm->vertexCos[(int) efa->v1->tmp.l]);
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces+sizeof(float)*3],emdm->faceNos[i]);
 
@@ -1829,7 +1829,7 @@
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2],emdm->vertexCos[(int) 
efa->v3->tmp.l]);
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],emdm->faceNos[i]);
                                        }
-                                       else {
+                                       else {*/
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces],efa->v1->co);
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces+sizeof(float)*3],efa->n);
 
@@ -1838,7 +1838,7 @@
 
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2],efa->v3->co);
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],efa->n);
-                                       }
+                                       /*}*/
                                        if( draw == 2 ) {
                                                
QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[2]);
                                                
QUATCOPY(&varray[elemsize*3*numfaces+elemsize+sizeof(float)*6],data.cols[2]);
@@ -1857,7 +1857,7 @@
 
                                        numfaces++;
                                        if( efa->v4 ) {
-                                               if (emdm->vertexCos) {
+                                               /*if (emdm->vertexCos) {
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces],emdm->vertexCos[(int) efa->v3->tmp.l]);
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces+sizeof(float)*3],emdm->faceNos[i]);
 
@@ -1867,7 +1867,7 @@
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2],emdm->vertexCos[(int) 
efa->v1->tmp.l]);
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],emdm->faceNos[i]);
                                                }
-                                               else {
+                                               else {*/
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces],efa->v3->co);
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces+sizeof(float)*3],efa->n);
 
@@ -1876,7 +1876,7 @@
 
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2],efa->v1->co);
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],efa->n);
-                                               }
+                                               /*}*/
 
                                                if( draw == 2 ) {
                                                        
QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[2]);
@@ -1898,7 +1898,7 @@
                                        }
                                }
                                else {
-                                       if (emdm->vertexCos) {
+                                       /*if (emdm->vertexCos) {
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces],emdm->vertexCos[(int) efa->v1->tmp.l]);
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces+sizeof(float)*3],emdm->vertexNos[(int) 
efa->v1->tmp.l]);
 
@@ -1908,7 +1908,7 @@
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2],emdm->vertexCos[(int) 
efa->v3->tmp.l]);
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],emdm->vertexNos[(int) 
efa->v3->tmp.l]);
                                        }
-                                       else {
+                                       else {*/
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces],efa->v1->co);
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces+sizeof(float)*3],efa->v1->no);
 
@@ -1917,7 +1917,7 @@
 
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2],efa->v3->co);
                                                VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],efa->v3->no);
-                                       }
+                                       /*}*/
 
                                        if( draw == 2 ) {
                                                
QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[2]);
@@ -1937,7 +1937,7 @@
 
                                        numfaces++;
                                        if( efa->v4 ) {
-                                               if (emdm->vertexCos) {
+                                               /*if (emdm->vertexCos) {
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces],emdm->vertexCos[(int) efa->v3->tmp.l]);
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces+sizeof(float)*3],emdm->vertexNos[(int) 
efa->v1->tmp.l]);
 
@@ -1947,7 +1947,7 @@
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2],emdm->vertexCos[(int) 
efa->v1->tmp.l]);
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],emdm->vertexNos[(int) 
efa->v3->tmp.l]);
                                                }
-                                               else {
+                                               else {*/
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces],efa->v3->co);
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces+sizeof(float)*3],efa->v3->no);
 
@@ -1956,7 +1956,7 @@
 
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2],efa->v1->co);
                                                        VECCOPY((float 
*)&varray[elemsize*3*numfaces+elemsize*2+sizeof(float)*3],efa->v1->no);
-                                               }
+                                               /*}*/
 
                                                if( draw == 2 ) {
                                                        
QUATCOPY(&varray[elemsize*3*numfaces+sizeof(float)*6],data.cols[2]);

Modified: branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c
===================================================================
--- branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c    
2009-08-11 02:27:25 UTC (rev 22361)
+++ branches/soc-2009-imbusy/source/blender/gpu/intern/gpu_buffers.c    
2009-08-11 05:31:41 UTC (rev 22362)
@@ -363,6 +363,7 @@
        GPU_buffer_free( object->uv, globalPool );
        GPU_buffer_free( object->colors, globalPool );
        GPU_buffer_free( object->edges, globalPool );
+       GPU_buffer_free( object->uvedges, globalPool );
 
        MEM_freeN(object);
        dm->drawObject = 0;


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to