Commit: 204c167c72fe20448200dc0a1504a84762ffd926
Author: Bastien Montagne
Date:   Mon Jun 11 16:02:46 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB204c167c72fe20448200dc0a1504a84762ffd926

Merge branch 'master' into blender2.8

Conflicts:
        source/blender/blenkernel/BKE_mesh.h
        source/blender/blenkernel/intern/mesh_convert.c
        source/blender/editors/interface/interface_eyedropper_color.c
        source/blender/editors/object/object_add.c
        source/blender/editors/space_image/image_ops.c
        source/blender/makesrna/intern/rna_image.c
        source/blender/windowmanager/intern/wm_draw.c

===================================================================



===================================================================

diff --cc source/blender/blenkernel/BKE_mesh.h
index cb58deb9511,3d69358960f..85ce4eb6cae
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@@ -133,22 -100,6 +133,22 @@@ void   BKE_mesh_orco_verts_transform(st
  int test_index_face(struct MFace *mface, struct CustomData *mfdata, int 
mfindex, int nr);
  struct Mesh *BKE_mesh_from_object(struct Object *ob);
  void BKE_mesh_assign_object(struct Main *bmain, struct Object *ob, struct 
Mesh *me);
 +void BKE_mesh_from_metaball(struct ListBase *lb, struct Mesh *me);
 +int  BKE_mesh_nurbs_to_mdata(
 +        struct Object *ob, struct MVert **r_allvert, int *r_totvert,
 +        struct MEdge **r_alledge, int *r_totedge, struct MLoop **r_allloop, 
struct MPoly **r_allpoly,
 +        int *r_totloop, int *r_totpoly);
 +int BKE_mesh_nurbs_displist_to_mdata(
 +        struct Object *ob, const struct ListBase *dispbase,
 +        struct MVert **r_allvert, int *r_totvert,
 +        struct MEdge **r_alledge, int *r_totedge,
 +        struct MLoop **r_allloop, struct MPoly **r_allpoly,
 +        struct MLoopUV **r_alluv, int *r_totloop, int *r_totpoly);
 +void BKE_mesh_from_nurbs_displist(
-         struct Object *ob, struct ListBase *dispbase, const bool use_orco_uv, 
const char *obdata_name, bool temporary);
- void BKE_mesh_from_nurbs(struct Object *ob);
++        struct Main *bmain, struct Object *ob, struct ListBase *dispbase, 
const bool use_orco_uv, const char *obdata_name, bool temporary);
++void BKE_mesh_from_nurbs(struct Main *bmain, struct Object *ob);
 +void BKE_mesh_to_curve_nurblist(const struct Mesh *me, struct ListBase 
*nurblist, const int edge_users_test);
- void BKE_mesh_to_curve(struct Depsgraph *depsgraph, struct Scene *scene, 
struct Object *ob);
++void BKE_mesh_to_curve(struct Main *bmain, struct Depsgraph *depsgraph, 
struct Scene *scene, struct Object *ob);
  void BKE_mesh_material_index_remove(struct Mesh *me, short index);
  void BKE_mesh_material_index_clear(struct Mesh *me);
  void BKE_mesh_material_remap(struct Mesh *me, const unsigned int *remap, 
unsigned int remap_len);
diff --cc source/blender/blenkernel/intern/mesh_convert.c
index acd0cf32b13,d376c90f1c2..33b38d60183
--- a/source/blender/blenkernel/intern/mesh_convert.c
+++ b/source/blender/blenkernel/intern/mesh_convert.c
@@@ -490,63 -479,11 +490,63 @@@ int BKE_mesh_nurbs_displist_to_mdata
        return 0;
  }
  
 +Mesh *BKE_mesh_new_nomain_from_curve_displist(Object *ob, ListBase *dispbase)
 +{
 +      Curve *cu = ob->data;
 +      Mesh *mesh;
 +      MVert *allvert;
 +      MEdge *alledge;
 +      MLoop *allloop;
 +      MPoly *allpoly;
 +      MLoopUV *alluv = NULL;
 +      int totvert, totedge, totloop, totpoly;
 +      bool use_orco_uv = (cu->flag & CU_UV_ORCO) != 0;
 +
 +      if (BKE_mesh_nurbs_displist_to_mdata(
 +              ob, dispbase, &allvert, &totvert, &alledge,
 +              &totedge, &allloop, &allpoly, (use_orco_uv) ? &alluv : NULL,
 +              &totloop, &totpoly) != 0)
 +      {
 +              /* Error initializing mdata. This often happens when curve is 
empty */
 +              return BKE_mesh_new_nomain(0, 0, 0, 0, 0);
 +      }
 +
 +      mesh = BKE_mesh_new_nomain(totvert, totedge, 0, totloop, totpoly);
 +      mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL;
 +
 +      memcpy(mesh->mvert, allvert, totvert * sizeof(MVert));
 +      memcpy(mesh->medge, alledge, totedge * sizeof(MEdge));
 +      memcpy(mesh->mloop, allloop, totloop * sizeof(MLoop));
 +      memcpy(mesh->mpoly, allpoly, totpoly * sizeof(MPoly));
 +
 +      if (alluv) {
 +              const char *uvname = "Orco";
 +              CustomData_add_layer_named(&mesh->ldata, CD_MLOOPUV, CD_ASSIGN, 
alluv, totloop, uvname);
 +      }
 +
 +      MEM_freeN(allvert);
 +      MEM_freeN(alledge);
 +      MEM_freeN(allloop);
 +      MEM_freeN(allpoly);
 +
 +      return mesh;
 +}
 +
 +Mesh *BKE_mesh_new_nomain_from_curve(Object *ob)
 +{
 +      ListBase disp = {NULL, NULL};
 +
 +      if (ob->curve_cache) {
 +              disp = ob->curve_cache->disp;
 +      }
 +
 +      return BKE_mesh_new_nomain_from_curve_displist(ob, &disp);
 +}
  
  /* this may fail replacing ob->data, be sure to check ob->type */
- void BKE_mesh_from_nurbs_displist(Object *ob, ListBase *dispbase, const bool 
use_orco_uv, const char *obdata_name, bool temporary)
+ void BKE_mesh_from_nurbs_displist(
 -        Main *bmain, Object *ob, ListBase *dispbase, const bool use_orco_uv, 
const char *obdata_name)
++        Main *bmain, Object *ob, ListBase *dispbase, const bool use_orco_uv, 
const char *obdata_name, bool temporary)
  {
-       Main *bmain = G.main;
        Object *ob1;
        DerivedMesh *dm = ob->derivedFinal;
        Mesh *me;
@@@ -630,19 -568,10 +630,19 @@@
                ob1 = ob1->id.next;
        }
  
 -      BKE_libblock_free_us(bmain, cu);
 +      if (temporary) {
 +              /* For temporary objects in BKE_mesh_new_from_object don't remap
 +               * the entire scene with associated depsgraph updates, which are
 +               * problematic for renderers exporting data. */
 +              id_us_min(&cu->id);
 +              BKE_libblock_free(bmain, cu);
 +      }
 +      else {
 +              BKE_libblock_free_us(bmain, cu);
 +      }
  }
  
- void BKE_mesh_from_nurbs(Object *ob)
+ void BKE_mesh_from_nurbs(Main *bmain, Object *ob)
  {
        Curve *cu = (Curve *) ob->data;
        bool use_orco_uv = (cu->flag & CU_UV_ORCO) != 0;
@@@ -652,7 -581,7 +652,7 @@@
                disp = ob->curve_cache->disp;
        }
  
-       BKE_mesh_from_nurbs_displist(ob, &disp, use_orco_uv, cu->id.name, 
false);
 -      BKE_mesh_from_nurbs_displist(bmain, ob, &disp, use_orco_uv, 
cu->id.name);
++      BKE_mesh_from_nurbs_displist(bmain, ob, &disp, use_orco_uv, 
cu->id.name, false);
  }
  
  typedef struct EdgeLink {
@@@ -812,18 -741,18 +812,18 @@@ void BKE_mesh_to_curve_nurblist(const M
        }
  }
  
- void BKE_mesh_to_curve(Depsgraph *depsgraph, Scene *scene, Object *ob)
 -void BKE_mesh_to_curve(Main *bmain, Scene *scene, Object *ob)
++void BKE_mesh_to_curve(Main *bmain, Depsgraph *depsgraph, Scene *scene, 
Object *ob)
  {
        /* make new mesh data from the original copy */
 -      DerivedMesh *dm = mesh_get_derived_final(scene, ob, CD_MASK_MESH);
 +      Mesh *me_eval = mesh_get_eval_final(depsgraph, scene, ob, CD_MASK_MESH);
        ListBase nurblist = {NULL, NULL};
        bool needsFree = false;
  
 -      BKE_mesh_to_curve_nurblist(dm, &nurblist, 0);
 -      BKE_mesh_to_curve_nurblist(dm, &nurblist, 1);
 +      BKE_mesh_to_curve_nurblist(me_eval, &nurblist, 0);
 +      BKE_mesh_to_curve_nurblist(me_eval, &nurblist, 1);
  
        if (nurblist.first) {
-               Curve *cu = BKE_curve_add(G.main, ob->id.name + 2, OB_CURVE);
+               Curve *cu = BKE_curve_add(bmain, ob->id.name + 2, OB_CURVE);
                cu->flag |= CU_3D;
  
                cu->nurb = nurblist;
@@@ -929,7 -849,7 +929,7 @@@ Mesh *BKE_mesh_new_from_object
  
                        /* convert object type to mesh */
                        uv_from_orco = (tmpcu->flag & CU_UV_ORCO) != 0;
-                       BKE_mesh_from_nurbs_displist(tmpobj, &dispbase, 
uv_from_orco, tmpcu->id.name + 2, true);
 -                      BKE_mesh_from_nurbs_displist(bmain, tmpobj, &dispbase, 
uv_from_orco, tmpcu->id.name + 2);
++                      BKE_mesh_from_nurbs_displist(bmain, tmpobj, &dispbase, 
uv_from_orco, tmpcu->id.name + 2, true);
  
                        tmpmesh = tmpobj->data;
  
diff --cc source/blender/editors/include/ED_image.h
index c45bebd5779,845d61ec355..73926b8a687
--- a/source/blender/editors/include/ED_image.h
+++ b/source/blender/editors/include/ED_image.h
@@@ -43,7 -42,8 +43,7 @@@ struct ViewLayer
  
  /* image_edit.c, exported for transform */
  struct Image *ED_space_image(struct SpaceImage *sima);
- void          ED_space_image_set(struct SpaceImage *sima, struct Scene 
*scene, struct Object *obedit, struct Image *ima);
 -void          ED_space_image_set(
 -        struct Main *bmain, struct SpaceImage *sima, struct Scene *scene, 
struct Object *obedit, struct Image *ima);
++void          ED_space_image_set(struct Main *bmain, struct SpaceImage *sima, 
struct Scene *scene, struct Object *obedit, struct Image *ima);
  struct Mask  *ED_space_image_get_mask(struct SpaceImage *sima);
  void          ED_space_image_set_mask(struct bContext *C, struct SpaceImage 
*sima, struct Mask *mask);
  
diff --cc source/blender/editors/interface/interface_eyedropper_color.c
index f3301d55284,7ba4b15a88f..a60b6f3f60b
--- a/source/blender/editors/interface/interface_eyedropper_color.c
+++ b/source/blender/editors/interface/interface_eyedropper_color.c
@@@ -131,8 -132,9 +132,9 @@@ static void eyedropper_exit(bContext *C
  void eyedropper_color_sample_fl(bContext *C, int mx, int my, float r_col[3])
  {
        /* we could use some clever */
+       Main *bmain = CTX_data_main(C);
 -      wmWindow *win = CTX_wm_window(C);
 -      ScrArea *sa = BKE_screen_find_area_xy(win->screen, SPACE_TYPE_ANY, mx, 
my);
 +      bScreen *screen = CTX_wm_screen(C);
 +      ScrArea *sa = BKE_screen_find_area_xy(screen, SPACE_TYPE_ANY, mx, my);
        const char *display_device = 
CTX_data_scene(C)->display_settings.display_device;
        struct ColorManagedDisplay *display = 
IMB_colormanagement_display_get_named(display_device);
  
diff --cc source/blender/editors/object/object_add.c
index 37589177037,519f5910624..9ce7f556448
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@@ -1635,10 -1567,10 +1635,10 @@@ static void convert_ensure_curve_cache(
        }
  }
  
- static void curvetomesh(Depsgraph *depsgraph, Scene *scene, Object *ob)
 -static void curvetomesh(Main *bmain, Scene *scene, Object *ob)
++static void curvetomesh(Main *bmain, Depsgraph *depsgraph, Scene *scene, 
Object *ob)
  {
 -      convert_ensure_curve_cache(bmain, scene, ob);
 +      convert_ensure_curve_cache(depsgraph, scene, ob);
-       BKE_mesh_from_nurbs(ob); /* also does users */
+       BKE_mesh_from_nurbs(bmain, ob); /* also does users */
  
        if (ob->type == OB_MESH) {
                BKE_object_free_modifiers(ob, 0);
@@@ -1785,7 -1724,7 +1785,7 @@@ static int convert_exec(bContext *C, wm
                                newob = ob;
                        }
  
-                       BKE_mesh_to_curve(depsgraph, scene, newob);
 -                      BKE_mesh_to_curve(bmain, scene, newob);
++                      BKE_mesh_to_curve(bmain, depsgraph, scene, newob);
  
                        if (newob->type == OB_CURVE) {
                                BKE_object_free_modifiers(newob, 0);   /* after 
derivedmesh calls! */
@@@ -1887,7 -1826,7 +1887,7 @@@
                        BKE_curve_curve_dimension_update(cu);
  
                        if (target == OB_MESH) {
-                               curvetomesh(depsgraph, scene, newob);
 -                              curvetomesh(bmain, scene, newob);
++                              curvetomesh(bmain, depsgraph, scene, newob);
  
                                /* meshes doesn't use displist */
                                BKE_object_free_curve_cache(newob);
@@@ -1911,7 -1850,7 +1911,7 @@@
 

@@ Diff output truncated at 10240 characters. @@

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

Reply via email to