[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