[Bf-blender-cvs] [f11ff0e672b] soc-2016-multiview: Merge branch 'master' into soc-2016-multiview

Tianwei Shen noreply at git.blender.org
Sat Apr 15 15:45:02 CEST 2017


Commit: f11ff0e672b8df79cdab85c8bebbd8c36c2c1cff
Author: Tianwei Shen
Date:   Sat Apr 15 21:44:48 2017 +0800
Branches: soc-2016-multiview
https://developer.blender.org/rBf11ff0e672b8df79cdab85c8bebbd8c36c2c1cff

Merge branch 'master' into soc-2016-multiview

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



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

diff --cc source/blender/blenloader/intern/readfile.c
index fb80585dc2a,c55b426c025..2900f9e4fc4
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@@ -6340,178 -6374,204 +6374,205 @@@ static void lib_link_screen(FileData *f
  			sc->animtimer = NULL; /* saved in rare cases */
  			sc->scrubbing = false;
  			
- 			for (sa = sc->areabase.first; sa; sa = sa->next) {
- 				SpaceLink *sl;
- 				
+ 			for (ScrArea *sa = sc->areabase.first; sa; sa = sa->next) {
  				sa->full = newlibadr(fd, sc->id.lib, sa->full);
  				
- 				for (sl = sa->spacedata.first; sl; sl= sl->next) {
- 					if (sl->spacetype == SPACE_VIEW3D) {
- 						View3D *v3d = (View3D*) sl;
- 						BGpic *bgpic = NULL;
- 						
- 						v3d->camera= newlibadr(fd, sc->id.lib, v3d->camera);
- 						v3d->ob_centre= newlibadr(fd, sc->id.lib, v3d->ob_centre);
- 						
- 						/* should be do_versions but not easy adding into the listbase */
- 						if (v3d->bgpic) {
- 							v3d->bgpic = newlibadr(fd, sc->id.lib, v3d->bgpic);
- 							BLI_addtail(&v3d->bgpicbase, bgpic);
- 							v3d->bgpic = NULL;
+ 				for (SpaceLink *sl = sa->spacedata.first; sl; sl= sl->next) {
+ 					switch (sl->spacetype) {
+ 						case SPACE_VIEW3D:
+ 						{
+ 							View3D *v3d = (View3D*) sl;
+ 							BGpic *bgpic = NULL;
+ 
+ 							v3d->camera= newlibadr(fd, sc->id.lib, v3d->camera);
+ 							v3d->ob_centre= newlibadr(fd, sc->id.lib, v3d->ob_centre);
+ 
+ 							/* should be do_versions but not easy adding into the listbase */
+ 							if (v3d->bgpic) {
+ 								v3d->bgpic = newlibadr(fd, sc->id.lib, v3d->bgpic);
+ 								BLI_addtail(&v3d->bgpicbase, bgpic);
+ 								v3d->bgpic = NULL;
+ 							}
+ 
+ 							for (bgpic = v3d->bgpicbase.first; bgpic; bgpic = bgpic->next) {
+ 								bgpic->ima = newlibadr_us(fd, sc->id.lib, bgpic->ima);
+ 								bgpic->clip = newlibadr_us(fd, sc->id.lib, bgpic->clip);
+ 							}
+ 							if (v3d->localvd) {
+ 								v3d->localvd->camera = newlibadr(fd, sc->id.lib, v3d->localvd->camera);
+ 							}
+ 							break;
  						}
- 						
- 						for (bgpic = v3d->bgpicbase.first; bgpic; bgpic = bgpic->next) {
- 							bgpic->ima = newlibadr_us(fd, sc->id.lib, bgpic->ima);
- 							bgpic->clip = newlibadr_us(fd, sc->id.lib, bgpic->clip);
+ 						case SPACE_IPO:
+ 						{
+ 							SpaceIpo *sipo = (SpaceIpo *)sl;
+ 							bDopeSheet *ads = sipo->ads;
+ 
+ 							if (ads) {
+ 								ads->source = newlibadr(fd, sc->id.lib, ads->source);
+ 								ads->filter_grp = newlibadr(fd, sc->id.lib, ads->filter_grp);
+ 							}
+ 							break;
  						}
- 						if (v3d->localvd) {
- 							v3d->localvd->camera = newlibadr(fd, sc->id.lib, v3d->localvd->camera);
+ 						case SPACE_BUTS:
+ 						{
+ 							SpaceButs *sbuts = (SpaceButs *)sl;
+ 							sbuts->pinid = newlibadr(fd, sc->id.lib, sbuts->pinid);
+ 							if (sbuts->pinid == NULL) {
+ 								sbuts->flag &= ~SB_PIN_CONTEXT;
+ 							}
+ 							break;
  						}
- 					}
- 					else if (sl->spacetype == SPACE_IPO) {
- 						SpaceIpo *sipo = (SpaceIpo *)sl;
- 						bDopeSheet *ads = sipo->ads;
- 						
- 						if (ads) {
- 							ads->source = newlibadr(fd, sc->id.lib, ads->source);
- 							ads->filter_grp = newlibadr(fd, sc->id.lib, ads->filter_grp);
+ 						case SPACE_FILE:
+ 							break;
+ 						case SPACE_ACTION:
+ 						{
+ 							SpaceAction *saction = (SpaceAction *)sl;
+ 							bDopeSheet *ads = &saction->ads;
+ 
+ 							if (ads) {
+ 								ads->source = newlibadr(fd, sc->id.lib, ads->source);
+ 								ads->filter_grp = newlibadr(fd, sc->id.lib, ads->filter_grp);
+ 							}
+ 
+ 							saction->action = newlibadr(fd, sc->id.lib, saction->action);
+ 							break;
  						}
- 					}
- 					else if (sl->spacetype == SPACE_BUTS) {
- 						SpaceButs *sbuts = (SpaceButs *)sl;
- 						sbuts->pinid = newlibadr(fd, sc->id.lib, sbuts->pinid);
- 						if (sbuts->pinid == NULL) {
- 							sbuts->flag &= ~SB_PIN_CONTEXT;
+ 						case SPACE_IMAGE:
+ 						{
+ 							SpaceImage *sima = (SpaceImage *)sl;
+ 
+ 							sima->image = newlibadr_real_us(fd, sc->id.lib, sima->image);
+ 							sima->mask_info.mask = newlibadr_real_us(fd, sc->id.lib, sima->mask_info.mask);
+ 
+ 							/* NOTE: pre-2.5, this was local data not lib data, but now we need this as lib data
+ 							 * so fingers crossed this works fine!
+ 							 */
+ 							sima->gpd = newlibadr_us(fd, sc->id.lib, sima->gpd);
+ 							break;
  						}
- 					}
- 					else if (sl->spacetype == SPACE_FILE) {
- 						;
- 					}
- 					else if (sl->spacetype == SPACE_ACTION) {
- 						SpaceAction *saction = (SpaceAction *)sl;
- 						bDopeSheet *ads = &saction->ads;
- 						
- 						if (ads) {
- 							ads->source = newlibadr(fd, sc->id.lib, ads->source);
- 							ads->filter_grp = newlibadr(fd, sc->id.lib, ads->filter_grp);
+ 						case SPACE_SEQ:
+ 						{
+ 							SpaceSeq *sseq = (SpaceSeq *)sl;
+ 
+ 							/* NOTE: pre-2.5, this was local data not lib data, but now we need this as lib data
+ 							 * so fingers crossed this works fine!
+ 							 */
+ 							sseq->gpd = newlibadr_us(fd, sc->id.lib, sseq->gpd);
+ 							break;
  						}
- 						
- 						saction->action = newlibadr(fd, sc->id.lib, saction->action);
- 					}
- 					else if (sl->spacetype == SPACE_IMAGE) {
- 						SpaceImage *sima = (SpaceImage *)sl;
- 						
- 						sima->image = newlibadr_real_us(fd, sc->id.lib, sima->image);
- 						sima->mask_info.mask = newlibadr_real_us(fd, sc->id.lib, sima->mask_info.mask);
- 
- 						/* NOTE: pre-2.5, this was local data not lib data, but now we need this as lib data
- 						 * so fingers crossed this works fine!
- 						 */
- 						sima->gpd = newlibadr_us(fd, sc->id.lib, sima->gpd);
- 					}
- 					else if (sl->spacetype == SPACE_SEQ) {
- 						SpaceSeq *sseq = (SpaceSeq *)sl;
- 						
- 						/* NOTE: pre-2.5, this was local data not lib data, but now we need this as lib data
- 						 * so fingers crossed this works fine!
- 						 */
- 						sseq->gpd = newlibadr_us(fd, sc->id.lib, sseq->gpd);
+ 						case SPACE_NLA:
+ 						{
+ 							SpaceNla *snla= (SpaceNla *)sl;
+ 							bDopeSheet *ads= snla->ads;
+ 
+ 							if (ads) {
+ 								ads->source = newlibadr(fd, sc->id.lib, ads->source);
+ 								ads->filter_grp = newlibadr(fd, sc->id.lib, ads->filter_grp);
+ 							}
+ 							break;
+ 						}
+ 						case SPACE_TEXT:
+ 						{
+ 							SpaceText *st= (SpaceText *)sl;
  
- 					}
- 					else if (sl->spacetype == SPACE_NLA) {
- 						SpaceNla *snla= (SpaceNla *)sl;
- 						bDopeSheet *ads= snla->ads;
- 						
- 						if (ads) {
- 							ads->source = newlibadr(fd, sc->id.lib, ads->source);
- 							ads->filter_grp = newlibadr(fd, sc->id.lib, ads->filter_grp);
+ 							st->text= newlibadr(fd, sc->id.lib, st->text);
+ 							break;
  						}
- 					}
- 					else if (sl->spacetype == SPACE_TEXT) {
- 						SpaceText *st= (SpaceText *)sl;
- 						
- 						st->text= newlibadr(fd, sc->id.lib, st->text);
- 					}
- 					else if (sl->spacetype == SPACE_SCRIPT) {
- 						SpaceScript *scpt = (SpaceScript *)sl;
- 						/*scpt->script = NULL; - 2.45 set to null, better re-run the script */
- 						if (scpt->script) {
- 							scpt->script = newlibadr(fd, sc->id.lib, scpt->script);
+ 						case SPACE_SCRIPT:
+ 						{
+ 							SpaceScript *scpt = (SpaceScript *)sl;
+ 							/*scpt->script = NULL; - 2.45 set to null, better re-run the script */
  							if (scpt->script) {
- 								SCRIPT_SET_NULL(scpt->script);
+ 								scpt->script = newlibadr(fd, sc->id.lib, scpt->script);
+ 								if (scpt->script) {
+ 									SCRIPT_SET_NULL(scpt->script);
+ 								}
  							}
+ 							break;
  						}
- 					}
- 					else if (sl->spacetype == SPACE_OUTLINER) {
- 						SpaceOops *so= (SpaceOops *)sl;
- 						so->search_tse.id = newlibadr(fd, NULL, so->search_tse.id);
- 						
- 						if (so->treestore) {
- 							TreeStoreElem *tselem;
- 							BLI_mempool_iter iter;
+ 						case SPACE_OUTLINER:
+ 						{
+ 							SpaceOops *so= (SpaceOops *)sl;
+ 							so->search_tse.id = newlibadr(fd, NULL, so->search_tse.id);
+ 
+ 							if (so->treestore) {
+ 								TreeStoreElem *tselem;
+ 								BLI_mempool_iter iter;
+ 
+ 								BLI_mempool_iternew(so->treestore, &iter);
+ 								while ((tselem = BLI_mempool_iterstep(&iter))) {
+ 									tselem->id = newlibadr(fd, NULL, tselem->id);
+ 								}
+ 								if (so->treehash) {
+ 									/* rebuild hash table, because it depends on ids too */
+ 									so->storeflag |= SO_TREESTORE_REBUILD;
+ 								}
+ 							}
+ 							break;
+ 						}
+ 						case SPACE_NODE:
+ 						{
+ 							SpaceNode *snode = (SpaceNode *)sl;
+ 							bNodeTreePath *path, *path_next;
+ 							bNodeTree *ntree;
+ 
+ 							/* node tree can be stored locally in id too, link this first */
+ 							snode->id = newlibadr(fd, sc->id.lib, snode->id);
+ 							snode->from = newlibadr(fd, sc->id.lib, snode->from);
+ 
+ 							ntree = snode->id ? ntreeFromID(snode->id) : NULL;
+ 							snode->nodetree = ntree ? ntree : newlibadr_us(fd, sc->id.lib, snode->nodetree);
+ 
+ 							for (path = snode->treepath.first; path; path = path->next) {
+ 								if (path == snode->treepath.first) {
+ 									/* first nodetree in path is same as snode->nodetree */
+ 									path->nodetree = snode->nodetree;
+ 								}
+ 								else
+ 									path->nodetree = newlibadr_us(fd, sc->id.lib, path->nodetree);
  
- 							BLI_mempool_iternew(so->treestore, &iter);
- 							while ((tselem = BLI_mempool_iterstep(&iter))) {
- 								tselem->id = newlibadr(fd, NULL, tselem->id);
+ 								if (!path->nodetree)
+ 									break;
  							}
- 							if (so->treehash) {
- 								/* rebuild hash table, because it depends on ids too */
- 								so->storeflag |= SO_TREESTORE_REBUILD;
+ 
+ 							/* remaining path entries are invalid, remove */
+ 							for (; path; path = path_next) {
+ 								path_next = path->next;
+ 
+ 								BLI_remlink(&snode->treepath, path);
+ 								MEM_freeN(path);
  							}
- 						}
- 					}
- 					else if (sl->spacetype == SPACE_NODE) {
- 						SpaceNode *snode = (SpaceNode *)sl;
- 						bNodeTreePath *path, *path_next;
- 						bNodeTree *ntree;
- 						
- 						/* node tree can be stored locally in id too, link this first */
- 						sn

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list