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

Campbell Barton noreply at git.blender.org
Tue Feb 13 15:05:22 CET 2018


Commit: b330804ff3eca68cdd65e26d551d1829fae5ff36
Author: Campbell Barton
Date:   Wed Feb 14 01:06:41 2018 +1100
Branches: blender2.8
https://developer.blender.org/rBb330804ff3eca68cdd65e26d551d1829fae5ff36

Merge branch 'master' into blender2.8

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



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

diff --cc source/blender/editors/include/ED_object.h
index 94ee228f4f8,8456c15c79d..757a463f171
--- a/source/blender/editors/include/ED_object.h
+++ b/source/blender/editors/include/ED_object.h
@@@ -126,6 -120,7 +126,8 @@@ void ED_object_toggle_modes(struct bCon
  #define EM_WAITCURSOR   4
  #define EM_DO_UNDO      8
  #define EM_IGNORE_LAYER 16
 -void ED_object_editmode_exit_ex(struct bContext *C, struct Scene *scene, struct Object *obedit, int flag);
++void ED_object_editmode_exit_ex(
++        struct bContext *C, struct WorkSpace *workspace, struct Scene *scene, struct Object *obedit, int flag);
  void ED_object_editmode_exit(struct bContext *C, int flag);
  void ED_object_editmode_enter(struct bContext *C, int flag);
  bool ED_object_editmode_load(struct Object *obedit);
diff --cc source/blender/editors/object/object_edit.c
index a74af68ca7d,dc010ac40ec..03c497bcef0
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@@ -260,21 -441,25 +260,23 @@@ bool ED_object_editmode_load(Object *ob
  	return ED_object_editmode_load_ex(G.main, obedit, false);
  }
  
- void ED_object_editmode_exit(bContext *C, int flag)
+ /**
+  * \param C: Can be NULL, only if #EM_DO_UNDO isn't set.
+  * \param flag:
+  * - Only in exceptional cases should #EM_DO_UNDO NOT be in the flag.
+  * - If #EM_FREEDATA isn't in the flag, use ED_object_editmode_load directly.
+  */
 -void ED_object_editmode_exit_ex(bContext *C, Scene *scene, Object *obedit, int flag)
++void ED_object_editmode_exit_ex(bContext *C, WorkSpace *workspace, Scene *scene, Object *obedit, int flag)
  {
- 	/* Note! only in exceptional cases should 'EM_DO_UNDO' NOT be in the flag */
- 	/* Note! if 'EM_FREEDATA' isn't in the flag, use ED_object_editmode_load directly */
- 	WorkSpace *workspace = CTX_wm_workspace(C);
- 	Scene *scene = CTX_data_scene(C);
- 	Object *obedit = CTX_data_edit_object(C);
+ 	BLI_assert(C || !(flag & EM_DO_UNDO));
  	const bool freedata = (flag & EM_FREEDATA) != 0;
  
  	if (flag & EM_WAITCURSOR) waitcursor(1);
  
- 	if (ED_object_editmode_load_ex(CTX_data_main(C), obedit, freedata) == false) {
+ 	if (ED_object_editmode_load_ex(G.main, obedit, freedata) == false) {
  		/* in rare cases (background mode) its possible active object
  		 * is flagged for editmode, without 'obedit' being set [#35489] */
 -		if (UNLIKELY(scene->basact && (scene->basact->object->mode & OB_MODE_EDIT))) {
 -			scene->basact->object->mode &= ~OB_MODE_EDIT;
 -		}
 +		workspace->object_mode &= ~OB_MODE_EDIT;
  		if (flag & EM_WAITCURSOR) waitcursor(0);
  		return;
  	}
@@@ -303,17 -488,25 +305,29 @@@
  		if (flag & EM_DO_UNDO)
  			ED_undo_push(C, "Editmode");
  
- 		WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_MODE_OBJECT, scene);
+ 		if (C != NULL) {
+ 			WM_event_add_notifier(C, NC_SCENE | ND_MODE | NS_MODE_OBJECT, scene);
+ 		}
+ 		else {
+ 			WM_main_add_notifier(NC_SCENE | ND_MODE | NS_MODE_OBJECT, scene);
+ 		}
  
 -		obedit->mode &= ~OB_MODE_EDIT;
 +		workspace->object_mode &= ~OB_MODE_EDIT;
  	}
  
  	if (flag & EM_WAITCURSOR) waitcursor(0);
 +
 +	/* This way we ensure scene's obedit is copied into all CoW scenes.  */
 +	DEG_id_tag_update(&scene->id, 0);
  }
  
+ void ED_object_editmode_exit(bContext *C, int flag)
+ {
++	WorkSpace *workspace = CTX_wm_workspace(C);
+ 	Scene *scene = CTX_data_scene(C);
+ 	Object *obedit = CTX_data_edit_object(C);
 -	ED_object_editmode_exit_ex(C, scene, obedit, flag);
++	ED_object_editmode_exit_ex(C, workspace, scene, obedit, flag);
+ }
  
  void ED_object_editmode_enter(bContext *C, int flag)
  {
diff --cc source/blender/editors/render/render_preview.c
index 2e3091268a9,e52dd7c65c8..c76a6aa175a
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@@ -454,22 -382,26 +454,27 @@@ static Scene *preview_prepare_scene(Mai
  					}
  				}
  				else {
 +					/* use current scene world to light sphere */
- 					if (mat->pr_type == MA_SPHERE_A) {
+ 					if (mat->pr_type == MA_SPHERE_A && sp->pr_method == PR_BUTS_RENDER) {
+ 						/* Use current scene world to light sphere. */
 -						sce->world = scene->world;
 +						sce->world = preview_get_localized_world(sp, scene->world);
  					}
+ 					else if (sce->world) {
+ 						/* Use a default world color. Using the current
+ 						 * scene world can be slow if it has big textures. */
+ 						sce->world->use_nodes = false;
+ 						sce->world->horr = 0.5f;
+ 						sce->world->horg = 0.5f;
+ 						sce->world->horb = 0.5f;
+ 					}
  				}
  				
  				if (sp->pr_method == PR_ICON_RENDER) {
  					if (mat->material_type == MA_TYPE_HALO) {
 -						sce->lay = 1 << MA_FLAT;
 +						set_preview_layer(view_layer, MA_FLAT);
  					}
  					else {
 -						sce->lay = 1 << MA_SPHERE_A;
 +						set_preview_layer(view_layer, MA_SPHERE_A);
- 
- 						/* same as above, use current scene world to light sphere */
- 						if (BKE_scene_use_new_shading_nodes(scene))
- 							sce->world = preview_get_localized_world(sp, scene->world);
  					}
  				}
  				else {
@@@ -568,10 -500,16 +573,18 @@@
  				}
  			}
  			else {
 +				set_preview_layer(view_layer, MA_LAMP);
++
+ 				if (sce->world) {
+ 					/* Only use lighting from the lamp. */
+ 					sce->world->use_nodes = false;
+ 					sce->world->horr = 0.0f;
+ 					sce->world->horg = 0.0f;
+ 					sce->world->horb = 0.0f;
+ 				}
  			}
  				
 -			for (base = sce->base.first; base; base = base->next) {
 +			for (Base *base = view_layer->object_bases.first; base; base = base->next) {
  				if (base->object->id.name[2] == 'p') {
  					if (base->object->type == OB_LAMP)
  						base->object->data = la;



More information about the Bf-blender-cvs mailing list