[Bf-blender-cvs] [204c167c72f] blender2.8: Merge branch 'master' into blender2.8

Bastien Montagne noreply at git.blender.org
Mon Jun 11 16:03:00 CEST 2018


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. @@



More information about the Bf-blender-cvs mailing list