[Bf-committers] [Bf-blender-cvs] SVN commit: ....
Ton Roosendaal
ton at blender.org
Fri Apr 10 16:32:36 CEST 2009
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
>
More information about the Bf-committers
mailing list