[Bf-committers] [Bf-blender-cvs] SVN commit: ....

Ton Roosendaal ton at blender.org
Sat Apr 11 10:02:38 CEST 2009


Hi,

> Seems
> the kernel functions using editmesh are more to blame then the new
> access functions.

I've removed all of them, but some might have come back in svn  
mergers... nevertheless, I spent a whole lot of time to keep this  
clean, so let's try to solve this!

-Ton-

------------------------------------------------------------------------
Ton Roosendaal  Blender Foundation   ton at blender.org    www.blender.org
Blender Institute BV  Entrepotdok 57A  1018AD Amsterdam The Netherlands

On 10 Apr, 2009, at 22:02, joe wrote:

> The warnings are probably compiler differences (e.g. my compiler
> didn't spit out warnings yours does).  I'm fairly sure I got most of
> the new ones generated by this change (though it's hard to tell given
> that the editmesh code in general is full of warnings, I probably
> should go over it again).
>
> I did try to get everyone to agree on this design beforehand, but no
> one seemed to care so I just went ahead and did it.  I honestly didn't
> expect to find editmesh code in blenkernel, which is why the new
> functions are in editors.  I'm not sure what to do about that.  Seems
> the kernel functions using editmesh are more to blame then the new
> access functions.
>
> Joe
>
> On Fri, Apr 10, 2009 at 8:32 AM, Ton Roosendaal <ton at blender.org>  
> wrote:
>> Hi Joe,
>>
>> I didnt follow all editmesh discussions, but this is not a good way to
>> do it.
>> The editors/ module can *not* be called in kernel level.
>>
>> If you need such a blender-wide call, put it in blenkernel,
>>
>> BKE_GetEditMesh()
>>
>> You also ignored plenty of warnings with this call... I'm not sure  
>> what
>> you do atm, but if you need design spec advise just poke me or Brecht
>> in IRC.
>>
>> -Ton-
>>
>> ---------------------------------------------------------------------- 
>> --
>> Ton Roosendaal  Blender Foundation   ton at blender.org    
>>  www.blender.org
>> Blender Institute BV  Entrepotdok 57A  1018AD Amsterdam The  
>> Netherlands
>>
>> On 30 Mar, 2009, at 9:28, Joseph Eagar wrote:
>>
>>> Revision: 19462
>>>
>>> http://projects.blender.org/plugins/scmsvn/viewcvs.php?
>>> view=rev&root=bf-blender&revision=19462
>>> Author:   joeedh
>>> Date:     2009-03-30 09:28:37 +0200 (Mon, 30 Mar 2009)
>>>
>>> Log Message:
>>> -----------
>>> editmesh accessor functions.  most editmesh access now goes through:
>>>
>>> EditMesh *EM_GetEditMesh(Mesh *me);
>>> void EM_EndEditMesh(Mesh *me, EditMesh *em);
>>>
>>> as discussed on the mailling list, this is to facilitate migration to
>>> bmesh.
>>> next step is to merge this this to the bmesh branch.  this was done  
>>> in
>>> the 2.5
>>> branch to prevent too great a divergance.
>>>
>>> also, made makesdna/makesrna work on cygwin/msvc2008/scons.
>>>
>>> Modified Paths:
>>> --------------
>>>      
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/anim.c
>>>
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/
>>> constraint.c
>>>
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/exotic.c
>>>
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/
>>> modifier.c
>>>
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/object.c
>>>
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/
>>> shrinkwrap.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h
>>>
>>> branches/blender2.5/blender/source/blender/editors/mesh/editdeform.c
>>>      
>>> branches/blender2.5/blender/source/blender/editors/mesh/editmesh.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/mesh/ 
>>> editmesh_add.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/mesh/
>>> editmesh_loop.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/mesh/
>>> editmesh_mods.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/mesh/
>>> editmesh_tools.c
>>>      
>>> branches/blender2.5/blender/source/blender/editors/mesh/mesh_ops.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/object/
>>> object_edit.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/screen/ 
>>> screen_ops.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/space_image/
>>> image_header.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/space_image/
>>> image_panels.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/space_image/
>>> space_image.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/space_view3d/
>>> view3d_buttons.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/space_view3d/
>>> view3d_header.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/uvedit/
>>> uvedit_draw.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/uvedit/ 
>>> uvedit_ops.c
>>>
>>> branches/blender2.5/blender/source/blender/editors/uvedit/
>>> uvedit_unwrap_ops.c
>>>
>>> branches/blender2.5/blender/source/blender/makesdna/intern/SConscript
>>>
>>> branches/blender2.5/blender/source/blender/makesrna/intern/SConscript
>>>
>>> Modified:
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/anim.c
>>> ===================================================================
>>> ---
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/anim.c
>>> 2009-03-30 05:32:46 UTC (rev 19461)
>>> +++
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/anim.c
>>> 2009-03-30 07:28:37 UTC (rev 19462)
>>> @@ -34,6 +34,7 @@
>>>
>>>  #include "MEM_guardedalloc.h"
>>>  #include "BLI_blenlib.h"
>>> +#include "BLI_editVert.h"
>>>  #include "BLI_arithb.h"
>>>  #include "BLI_rand.h"
>>>  #include "DNA_listBase.h"
>>> @@ -72,6 +73,8 @@
>>>  #include <config.h>
>>>  #endif
>>>
>>> +#include "ED_mesh.h"
>>> +
>>>  static void object_duplilist_recursive(ID *id, Scene *scene, Object
>>> *ob, ListBase *duplilist, float par_space_mat[][4], int level, int
>>> animated);
>>>
>>>  void free_path(Path *path)
>>> @@ -445,6 +448,7 @@
>>>       Scene *sce = NULL;
>>>       Group *group = NULL;
>>>       GroupObject * go = NULL;
>>> +     EditMesh *em;
>>>       float vec[3], no[3], pmat[4][4];
>>>       int lay, totvert, a, oblay;
>>>
>>> @@ -452,12 +456,15 @@
>>>
>>>       /* simple preventing of too deep nested groups */
>>>       if(level>MAX_DUPLI_RECUR) return;
>>> -
>>> -     if(me->edit_mesh)
>>> -             dm= editmesh_get_derived_cage(scene, par,  
>>> me->edit_mesh,
>>> CD_MASK_BAREMESH);
>>> -     else
>>> +
>>> +     em = EM_GetEditMesh(me);
>>> +
>>> +     if(em) {
>>> +             dm= editmesh_get_derived_cage(scene, par, em,  
>>> CD_MASK_BAREMESH);
>>> +             EM_EndEditMesh(me, em);
>>> +     } else
>>>               dm= mesh_get_derived_deform(scene, par,  
>>> CD_MASK_BAREMESH);
>>> -
>>> +
>>>       if(G.rendering) {
>>>               vdd.orco= (float(*)[3])get_mesh_orco_verts(par);
>>>               transform_mesh_orco_verts(me, vdd.orco, me->totvert,  
>>> 0);
>>> @@ -557,17 +564,19 @@
>>>       Scene *sce = NULL;
>>>       Group *group = NULL;
>>>       GroupObject *go = NULL;
>>> +     EditMesh *em;
>>>       float ob__obmat[4][4]; /* needed for groups where the object  
>>> matrix
>>> needs to be modified */
>>>
>>>       /* simple preventing of too deep nested groups */
>>>       if(level>MAX_DUPLI_RECUR) return;
>>>
>>>       Mat4CpyMat4(pmat, par->obmat);
>>> -
>>> -     if(me->edit_mesh) {
>>> +
>>> +     em = EM_GetEditMesh(me);
>>> +     if(em) {
>>>               int totvert;
>>>
>>> -             dm= editmesh_get_derived_cage(scene, par,  
>>> me->edit_mesh,
>>> CD_MASK_BAREMESH);
>>> +             dm= editmesh_get_derived_cage(scene, par, em,  
>>> CD_MASK_BAREMESH);
>>>
>>>               totface= dm->getNumFaces(dm);
>>>               mface= MEM_mallocN(sizeof(MFace)*totface, "mface  
>>> temp");
>>> @@ -575,6 +584,8 @@
>>>               totvert= dm->getNumVerts(dm);
>>>               mvert= MEM_mallocN(sizeof(MVert)*totvert, "mvert  
>>> temp");
>>>               dm->copyVertArray(dm, mvert);
>>> +
>>> +             EM_EndEditMesh(me, em);
>>>       }
>>>       else {
>>>               dm = mesh_get_derived_deform(scene, par,  
>>> CD_MASK_BAREMESH);
>>>
>>> Modified:
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/
>>> constraint.c
>>> ===================================================================
>>> ---
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/
>>> constraint.c  2009-03-30 05:32:46 UTC (rev 19461)
>>> +++
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/
>>> constraint.c  2009-03-30 07:28:37 UTC (rev 19462)
>>> @@ -38,6 +38,7 @@
>>>
>>>  #include "BLI_blenlib.h"
>>>  #include "BLI_arithb.h"
>>> +#include "BLI_editVert.h"
>>>
>>>  #include "DNA_armature_types.h"
>>>  #include "DNA_constraint_types.h"
>>> @@ -70,6 +71,7 @@
>>>  #include "BPY_extern.h"
>>>  #endif
>>>
>>> +#include "ED_mesh.h"
>>>
>>>  #ifdef HAVE_CONFIG_H
>>>  #include <config.h>
>>> @@ -390,6 +392,7 @@
>>>  {
>>>       DerivedMesh *dm;
>>>       Mesh *me= ob->data;
>>> +     EditMesh *em = EM_GetEditMesh(me);
>>>       float vec[3] = {0.0f, 0.0f, 0.0f}, tvec[3];
>>>       float normal[3] = {0.0f, 0.0f, 0.0f}, plane[3];
>>>       float imat[3][3], tmat[3][3];
>>> @@ -403,9 +406,9 @@
>>>       if (dgroup < 0) return;
>>>
>>>       /* get DerivedMesh */
>>> -     if (me->edit_mesh) {
>>> +     if (em) {
>>>               /* target is in editmode, so get a special derived  
>>> mesh */
>>> -             dm = CDDM_from_editmesh(me->edit_mesh, ob->data);
>>> +             dm = CDDM_from_editmesh(em, ob->data);
>>>       }
>>>       else {
>>>               /* when not in EditMode, this should exist */
>>> @@ -475,8 +478,9 @@
>>>       }
>>>
>>>       /* free temporary DerivedMesh created (in EditMode case) */
>>> -     if (me->edit_mesh) {
>>> +     if (em) {
>>>               if (dm) dm->release(dm);
>>> +             EM_EndEditMesh(me, em);
>>>       }
>>>  }
>>>
>>>
>>> Modified:
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/exotic.c
>>> ===================================================================
>>> ---
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/exotic.c
>>> 2009-03-30 05:32:46 UTC (rev 19461)
>>> +++
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/exotic.c
>>> 2009-03-30 07:28:37 UTC (rev 19462)
>>> @@ -2388,7 +2388,7 @@
>>>  static void write_videoscape_mesh(Scene *scene, Object *ob, char  
>>> *str)
>>>  {
>>>       Mesh *me= ob->data;
>>> -     EditMesh *em = me->edit_mesh;
>>> +     EditMesh *em = EM_GetEditMesh(me);
>>>       Material *ma;
>>>       MFace *mface;
>>>       FILE *fp;
>>> @@ -2489,6 +2489,8 @@
>>>       }
>>>
>>>       fclose(fp);
>>> +
>>> +     if (em) EM_EndEditMesh(em);
>>>
>>>  }
>>>
>>>
>>> Modified:
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/
>>> modifier.c
>>> ===================================================================
>>> ---
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/
>>> modifier.c    2009-03-30 05:32:46 UTC (rev 19461)
>>> +++
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/
>>> modifier.c    2009-03-30 07:28:37 UTC (rev 19462)
>>> @@ -7541,6 +7541,7 @@
>>>       DerivedMesh *tmpdm, *cagedm;
>>>       MDeformVert *dvert = NULL;
>>>       MDeformWeight *dw;
>>> +     EditMesh *em = EM_GetEditMesh(me);
>>>       MVert *cagemvert;
>>>       float imat[4][4], cagemat[4][4], iobmat[4][4], icagemat[3][3],
>>> cmat[4][4];
>>>       float weight, totweight, fac, co[3], *weights, (*dco)[3],
>>> (*bindcos)[3];
>>> @@ -7550,10 +7551,11 @@
>>>               return;
>>>
>>>       /* get cage derivedmesh */
>>> -     if(me->edit_mesh) {
>>> -             tmpdm= editmesh_get_derived_cage_and_final(md->scene,  
>>> ob,
>>> me->edit_mesh, &cagedm, 0);
>>> +     if(em) {
>>> +             tmpdm= editmesh_get_derived_cage_and_final(md->scene,  
>>> ob, em,
>>> &cagedm, 0);
>>>               if(tmpdm)
>>>                       tmpdm->release(tmpdm);
>>> +             EM_EndEditMesh(em);
>>>       }
>>>       else
>>>               cagedm= mmd->object->derivedFinal;
>>>
>>> Modified:
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/object.c
>>> ===================================================================
>>> ---
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/object.c
>>> 2009-03-30 05:32:46 UTC (rev 19461)
>>> +++
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/object.c
>>> 2009-03-30 07:28:37 UTC (rev 19462)
>>> @@ -1635,15 +1635,16 @@
>>>
>>>  static void give_parvert(Object *par, int nr, float *vec)
>>>  {
>>> +     EditMesh *em;
>>>       int a, count;
>>>
>>>       vec[0]=vec[1]=vec[2]= 0.0f;
>>>
>>>       if(par->type==OB_MESH) {
>>>               Mesh *me= par->data;
>>> -
>>> -             if(me->edit_mesh) {
>>> -                     EditMesh *em = me->edit_mesh;
>>> +             em = EM_GetEditMesh(me);
>>> +
>>> +             if(em) {
>>>                       EditVert *eve;
>>>
>>>                       for(eve= em->verts.first; eve; eve= eve->next)  
>>> {
>>> @@ -1652,6 +1653,7 @@
>>>                                       break;
>>>                               }
>>>                       }
>>> +                     EM_EndEditMesh(me, em);
>>>               }
>>>               else {
>>>                       DerivedMesh *dm = par->derivedFinal;
>>> @@ -2294,10 +2296,13 @@
>>>
>>>                       /* includes all keys and modifiers */
>>>                       if(ob->type==OB_MESH) {
>>> +                             EditMesh *em =  
>>> EM_GetEditMesh(ob->data);
>>> +
>>>                                       // here was vieweditdatamask?  
>>> XXX
>>> -                             if(ob==scene->obedit)
>>> -                                     makeDerivedMesh(scene, ob,  
>>> ((Mesh*)ob->data)->edit_mesh,
>>> CD_MASK_BAREMESH);
>>> -                             else
>>> +                             if(ob==scene->obedit) {
>>> +                                     makeDerivedMesh(scene, ob, em,  
>>> CD_MASK_BAREMESH);
>>> +                                     EM_EndEditMesh(ob->data, em);
>>> +                             } else
>>>                                       makeDerivedMesh(scene, ob,  
>>> NULL, CD_MASK_BAREMESH);
>>>                       }
>>>                       else if(ob->type==OB_MBALL) {
>>>
>>> Modified:
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/
>>> shrinkwrap.c
>>> ===================================================================
>>> ---
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/
>>> shrinkwrap.c  2009-03-30 05:32:46 UTC (rev 19461)
>>> +++
>>> branches/blender2.5/blender/source/blender/blenkernel/intern/
>>> shrinkwrap.c  2009-03-30 07:28:37 UTC (rev 19462)
>>> @@ -52,10 +52,12 @@
>>>  #include "BLI_arithb.h"
>>>  #include "BLI_kdtree.h"
>>>  #include "BLI_kdopbvh.h"
>>> +#include "BLI_editVert.h"
>>>
>>>  #include "RE_raytrace.h"
>>>  #include "MEM_guardedalloc.h"
>>>
>>> +#include "ED_mesh.h"
>>>
>>>  /* Util macros */
>>>  #define TO_STR(a)    #a
>>> @@ -94,11 +96,14 @@
>>>  static DerivedMesh *object_get_derived_final(struct Scene *scene,
>>> Object *ob, CustomDataMask dataMask)
>>>  {
>>>       Mesh *me= ob->data;
>>> -
>>> -     if (me->edit_mesh)
>>> +     EditMesh *em = EM_GetEditMesh(me);
>>> +
>>> +     if (em)
>>>       {
>>>               DerivedMesh *final = NULL;
>>> -             editmesh_get_derived_cage_and_final(scene, ob,  
>>> me->edit_mesh,
>>> &final, dataMask);
>>> +             editmesh_get_derived_cage_and_final(scene, ob, em,  
>>> &final,
>>> dataMask);
>>> +
>>> +             EM_EndEditMesh(me, em);
>>>               return final;
>>>       }
>>>       else
>>>
>>> Modified:
>>> branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h
>>> ===================================================================
>>> ---
>>> branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h
>>> 2009-03-30 05:32:46 UTC (rev 19461)
>>> +++
>>> branches/blender2.5/blender/source/blender/editors/include/ED_mesh.h
>>> 2009-03-30 07:28:37 UTC (rev 19462)
>>> @@ -82,6 +82,12 @@
>>>
>>>
>>>  /* editmesh.c */
>>> +
>>> +/*accessor functions for editmesh, all access to editmesh must
>>> +  go through them!*/
>>> +struct EditMesh *EM_GetEditMesh(struct Mesh *me);
>>> +void EM_EndEditMesh(struct Mesh *me, struct EditMesh *em);
>>> +
>>>  void         ED_spacetypes_init(void);
>>>  void         ED_keymap_mesh(struct wmWindowManager *wm);
>>>
>>>
>>> Modified:
>>> branches/blender2.5/blender/source/blender/editors/mesh/editdeform.c
>>> ===================================================================
>>> ---
>>> branches/blender2.5/blender/source/blender/editors/mesh/editdeform.c
>>> 2009-03-30 05:32:46 UTC (rev 19461)
>>> +++
>>> branches/blender2.5/blender/source/blender/editors/mesh/editdeform.c
>>> 2009-03-30 07:28:37 UTC (rev 19462)
>>> @@ -94,10 +94,11 @@
>>>       case OB_MESH:
>>>       {
>>>               Mesh *me= ob->data;
>>> -
>>> -             for (eve=me->edit_mesh->verts.first; eve;  
>>> eve=eve->next){
>>> -                     dvert=  
>>> CustomData_em_get(&me->edit_mesh->vdata, eve->data,
>>> CD_MDEFORMVERT);
>>> +             EditMesh *em = EM_GetEditMesh(me);
>>>
>>> +             for (eve=em->verts.first; eve; eve=eve->next){
>>> +                     dvert= CustomData_em_get(&em->vdata,  
>>> eve->data, CD_MDEFORMVERT);
>>> +
>>>                       if (dvert && dvert->totweight){
>>>                               for (i=0; i<dvert->totweight; i++){
>>>                                       if (dvert->dw[i].def_nr ==  
>>> (ob->actdef-1)){
>>> @@ -110,8 +111,10 @@
>>>                       }
>>>               }
>>>               /* this has to be called, because this function  
>>> operates on
>>> vertices only */
>>> -             if(select) EM_select_flush(me->edit_mesh);      //  
>>> vertices to
>>> edges/faces
>>> -             else EM_deselect_flush(me->edit_mesh);
>>> +             if(select) EM_select_flush(em); // vertices to  
>>> edges/faces
>>> +             else EM_deselect_flush(em);
>>> +
>>> +             EM_EndEditMesh(em, me);
>>>       }
>>>               break;
>>>       case OB_LATTICE:
>>> @@ -395,18 +398,19 @@
>>>       /* Make sure that any verts with higher indices are adjusted
>>> accordingly */
>>>       if(ob->type==OB_MESH) {
>>>               Mesh *me= ob->data;
>>> -             EditMesh *em = me->edit_mesh;
>>> +             EditMesh *em = EM_GetEditMesh(me);
>>>               EditVert *eve;
>>>               MDeformVert *dvert;
>>>
>>>               for (eve=em->verts.first; eve; eve=eve->next){
>>> -                     dvert=  
>>> CustomData_em_get(&me->edit_mesh->vdata, eve->data,
>>> CD_MDEFORMVERT);
>>> +                     dvert= CustomData_em_get(&em->vdata,  
>>> eve->data, CD_MDEFORMVERT);
>>>
>>>                       if (dvert)
>>>
>>> @@ Diff output truncated at 10240 characters. @@
>>>
>>> _______________________________________________
>>> Bf-blender-cvs mailing list
>>> Bf-blender-cvs at blender.org
>>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>>>
>>
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
>>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>
>



More information about the Bf-committers mailing list