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

Bastien Montagne noreply at git.blender.org
Mon Dec 4 14:16:26 CET 2017


Commit: 47fa3e7b27623f85acba9161e5210507a67742f1
Author: Bastien Montagne
Date:   Mon Dec 4 13:57:26 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB47fa3e7b27623f85acba9161e5210507a67742f1

Merge branch 'master' into blender2.8

Conflicts:
	source/blender/blenloader/BLO_readfile.h
	source/blender/blenloader/intern/readfile.c
	source/blender/windowmanager/intern/wm_files_link.c

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



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

diff --cc source/blender/blenloader/BLO_readfile.h
index 00d00e98c84,4fd2e227bc5..0da15fe5bbc
--- a/source/blender/blenloader/BLO_readfile.h
+++ b/source/blender/blenloader/BLO_readfile.h
@@@ -123,10 -123,9 +133,10 @@@ struct Main *BLO_library_link_begin(str
  struct ID *BLO_library_link_named_part(struct Main *mainl, BlendHandle **bh, const short idcode, const char *name);
  struct ID *BLO_library_link_named_part_ex(
          struct Main *mainl, BlendHandle **bh,
-         const short idcode, const char *name, const short flag,
-         struct Scene *scene, struct ViewLayer *view_layer,
-         const bool use_placeholders, const bool force_indirect);
- void BLO_library_link_end(struct Main *mainl, BlendHandle **bh, short flag, struct Scene *scene, struct ViewLayer *view_layer);
+         const short idcode, const char *name, const int flag,
 -        struct Scene *scene, struct View3D *v3d);
 -void BLO_library_link_end(struct Main *mainl, BlendHandle **bh, short flag, struct Scene *scene, struct View3D *v3d);
++        struct Scene *scene, struct ViewLayer *view_layer);
++void BLO_library_link_end(
++        struct Main *mainl, BlendHandle **bh, int flag, struct Scene *scene, struct ViewLayer *view_layer);
  
  void BLO_library_link_copypaste(struct Main *mainl, BlendHandle *bh);
  
diff --cc source/blender/blenloader/intern/readfile.c
index 9e09d2e0bd1,caf58ba3f86..6df5a505788
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@@ -251,10 -238,9 +251,11 @@@ typedef struct OldNewMap 
  /* local prototypes */
  static void *read_struct(FileData *fd, BHead *bh, const char *blockname);
  static void direct_link_modifiers(FileData *fd, ListBase *lb);
 -static void convert_tface_mt(FileData *fd, Main *main);
  static BHead *find_bhead_from_code_name(FileData *fd, const short idcode, const char *name);
  static BHead *find_bhead_from_idname(FileData *fd, const char *idname);
 +static void expand_scene_collection(FileData *fd, Main *mainvar, SceneCollection *sc);
- static SceneCollection *get_scene_collection_active_or_create(struct Scene *scene, struct ViewLayer *view_layer, const short flag);
++static SceneCollection *get_scene_collection_active_or_create(
++        struct Scene *scene, struct ViewLayer *view_layer, const int flag);
  
  /* this function ensures that reports are printed,
   * in the case of libraray linking errors this is important!
@@@ -10418,42 -10082,31 +10421,43 @@@ static ID *link_named_part
  	return id;
  }
  
- static SceneCollection *get_scene_collection_active_or_create(struct Scene *scene, struct ViewLayer *view_layer, const short flag)
 -static void link_object_postprocess(ID *id, Scene *scene, View3D *v3d, const int flag)
++static SceneCollection *get_scene_collection_active_or_create(
++        struct Scene *scene, struct ViewLayer *view_layer, const int flag)
 +{
 +	LayerCollection *lc = NULL;
 +
 +	if (flag & FILE_ACTIVE_COLLECTION) {
 +		lc = BKE_layer_collection_get_active_ensure(scene, view_layer);
 +	}
 +	else {
 +		SceneCollection *sc = BKE_collection_add(&scene->id, NULL, COLLECTION_TYPE_NONE, NULL);
 +		lc = BKE_collection_link(view_layer, sc);
 +	}
 +
 +	return lc->scene_collection;
 +}
 +
- static void link_object_postprocess(ID *id, Scene *scene, ViewLayer *view_layer, const short flag)
++static void link_object_postprocess(ID *id, Scene *scene, ViewLayer *view_layer, const int flag)
  {
  	if (scene) {
 +		/* link to scene */
  		Base *base;
  		Object *ob;
 -
 -		base = MEM_callocN(sizeof(Base), "app_nam_part");
 -		BLI_addtail(&scene->base, base);
 +		SceneCollection *sc;
  
  		ob = (Object *)id;
 -
 -		/* link at active layer (view3d if available in context, else scene one */
 -		if (flag & FILE_ACTIVELAY) {
 -			ob->lay = BKE_screen_view3d_layer_active(v3d, scene);
 -		}
 -
  		ob->mode = OB_MODE_OBJECT;
 -		base->lay = ob->lay;
 -		base->object = ob;
 -		base->flag = ob->flag;
 -		id_us_plus_no_lib((ID *)ob);
 +
 +		sc =  get_scene_collection_active_or_create(scene, view_layer, flag);
 +		BKE_collection_object_add(&scene->id, sc, ob);
 +		base = BKE_view_layer_base_find(view_layer, ob);
 +		BKE_scene_object_base_flag_sync_from_base(base);
  
  		if (flag & FILE_AUTOSELECT) {
 -			base->flag |= SELECT;
 -			base->object->flag = base->flag;
 +			if (base->flag & BASE_SELECTABLED) {
 +				base->flag |= BASE_SELECTED;
 +				BKE_scene_object_base_flag_sync_from_base(base);
 +			}
  			/* do NOT make base active here! screws up GUI stuff, if you want it do it on src/ level */
  		}
  	}
@@@ -10495,13 -10148,13 +10499,13 @@@ void BLO_library_link_copypaste(Main *m
  }
  
  static ID *link_named_part_ex(
-         Main *mainl, FileData *fd, const short idcode, const char *name, const short flag,
-         Scene *scene, ViewLayer *view_layer, const bool use_placeholders, const bool force_indirect)
+         Main *mainl, FileData *fd, const short idcode, const char *name, const int flag,
 -        Scene *scene, View3D *v3d)
++        Scene *scene, ViewLayer *view_layer)
  {
- 	ID *id = link_named_part(mainl, fd, idcode, name, use_placeholders, force_indirect);
+ 	ID *id = link_named_part(mainl, fd, idcode, name, flag);
  
  	if (id && (GS(id->name) == ID_OB)) {	/* loose object: give a base */
 -		link_object_postprocess(id, scene, v3d, flag);
 +		link_object_postprocess(id, scene, view_layer, flag);
  	}
  	else if (id && (GS(id->name) == ID_GR)) {
  		/* tag as needing to be instantiated */
@@@ -10544,12 -10195,11 +10546,11 @@@ ID *BLO_library_link_named_part(Main *m
   */
  ID *BLO_library_link_named_part_ex(
          Main *mainl, BlendHandle **bh,
-         const short idcode, const char *name, const short flag,
-         Scene *scene, ViewLayer *view_layer,
-         const bool use_placeholders, const bool force_indirect)
+         const short idcode, const char *name, const int flag,
 -        Scene *scene, View3D *v3d)
++        Scene *scene, ViewLayer *view_layer)
  {
  	FileData *fd = (FileData*)(*bh);
- 	return link_named_part_ex(mainl, fd, idcode, name, flag, scene, view_layer, use_placeholders, force_indirect);
 -	return link_named_part_ex(mainl, fd, idcode, name, flag, scene, v3d);
++	return link_named_part_ex(mainl, fd, idcode, name, flag, scene, view_layer);
  }
  
  static void link_id_part(ReportList *reports, FileData *fd, Main *mainvar, ID *id, ID **r_id)
@@@ -10747,12 -10397,12 +10748,12 @@@ static void library_link_end(Main *main
   * \param bh The blender file handle (WARNING! may be freed by this function!).
   * \param flag Options for linking, used for instantiating.
   * \param scene The scene in which to instantiate objects/groups (if NULL, no instantiation is done).
 - * \param v3d The active View3D (only to define active layers for instantiated objects & groups, can be NULL).
 + * \param view_layer The scene layer in which to instantiate objects/groups (if NULL, no instantiation is done).
   */
- void BLO_library_link_end(Main *mainl, BlendHandle **bh, short flag, Scene *scene, ViewLayer *view_layer)
 -void BLO_library_link_end(Main *mainl, BlendHandle **bh, short flag, Scene *scene, View3D *v3d)
++void BLO_library_link_end(Main *mainl, BlendHandle **bh, int flag, Scene *scene, ViewLayer *view_layer)
  {
  	FileData *fd = (FileData*)(*bh);
 -	library_link_end(mainl, &fd, flag, scene, v3d);
 +	library_link_end(mainl, &fd, flag, scene, view_layer);
  	*bh = (BlendHandle*)fd;
  }
  
diff --cc source/blender/windowmanager/intern/wm_files_link.c
index 2086ade99d2,05c569cbaac..cd6a38cb9a8
--- a/source/blender/windowmanager/intern/wm_files_link.c
+++ b/source/blender/windowmanager/intern/wm_files_link.c
@@@ -213,9 -211,7 +213,8 @@@ static WMLinkAppendDataItem *wm_link_ap
  	return item;
  }
  
 -static void wm_link_do(WMLinkAppendData *lapp_data, ReportList *reports, Main *bmain, Scene *scene, View3D *v3d)
 +static void wm_link_do(
-         WMLinkAppendData *lapp_data, ReportList *reports, Main *bmain, Scene *scene, ViewLayer *view_layer,
-         const bool use_placeholders, const bool force_indirect)
++        WMLinkAppendData *lapp_data, ReportList *reports, Main *bmain, Scene *scene, ViewLayer *view_layer)
  {
  	Main *mainl;
  	BlendHandle *bh;
@@@ -262,8 -258,7 +261,7 @@@
  				continue;
  			}
  
- 			new_id = BLO_library_link_named_part_ex(
- 			             mainl, &bh, item->idcode, item->name, flag, scene, view_layer, use_placeholders, force_indirect);
 -			new_id = BLO_library_link_named_part_ex(mainl, &bh, item->idcode, item->name, flag, scene, v3d);
++			new_id = BLO_library_link_named_part_ex(mainl, &bh, item->idcode, item->name, flag, scene, view_layer);
  
  			if (new_id) {
  				/* If the link is successful, clear item's libs 'todo' flags.
@@@ -372,10 -329,12 +370,12 @@@ static int wm_link_append_exec(bContex
  		scene = NULL;
  	}
  
+ 	/* We need to add nothing from BLO_LibLinkFlags to flag here. */
+ 
  	/* from here down, no error returns */
  
 -	if (scene && RNA_boolean_get(op->ptr, "autoselect")) {
 -		BKE_scene_base_deselect_all(scene);
 +	if (view_layer && RNA_boolean_get(op->ptr, "autoselect")) {
 +		BKE_view_layer_base_deselect_all(view_layer);
  	}
  	
  	/* tag everything, all untagged data can be made local
@@@ -453,7 -404,7 +453,7 @@@
  	/* XXX We'd need re-entrant locking on Main for this to work... */
  	/* BKE_main_lock(bmain); */
  
- 	wm_link_do(lapp_data, op->reports, bmain, scene, view_layer, false, false);
 -	wm_link_do(lapp_data, op->reports, bmain, scene, CTX_wm_view3d(C));
++	wm_link_do(lapp_data, op->reports, bmain, scene, view_layer);
  
  	/* BKE_main_unlock(bmain); */
  
@@@ -924,7 -868,11 +924,11 @@@ static int wm_lib_relocate_exec_do(bCon
  			}
  		}
  
+ 		if (do_reload) {
+ 			lapp_data->flag |= BLO_LIBLINK_USE_PLACEHOLDERS | BLO_LIBLINK_FORCE_INDIRECT;
+ 		}
+ 
 -		lib_relocate_do(bmain, scene, lib, lapp_data, op->reports, do_reload);
 +		lib_relocate_do(bmain, lib, lapp_data, op->reports, do_reload);
  
  		wm_link_append_data_free(lapp_data);



More information about the Bf-blender-cvs mailing list