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

joe joeedh at gmail.com
Fri Apr 10 22:02:38 CEST 2009


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
>


More information about the Bf-committers mailing list