[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27880] branches/render25/source/blender: appending a data that linked to another blend file would fail to save that link because it didnt tag it as directly linked .
Campbell Barton
ideasman42 at gmail.com
Tue Mar 30 21:53:31 CEST 2010
Revision: 27880
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27880
Author: campbellbarton
Date: 2010-03-30 21:53:30 +0200 (Tue, 30 Mar 2010)
Log Message:
-----------
appending a data that linked to another blend file would fail to save that link because it didnt tag it as directly linked.
Modified Paths:
--------------
branches/render25/source/blender/blenkernel/intern/library.c
branches/render25/source/blender/blenloader/intern/readfile.c
Modified: branches/render25/source/blender/blenkernel/intern/library.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/library.c 2010-03-30 18:36:33 UTC (rev 27879)
+++ branches/render25/source/blender/blenkernel/intern/library.c 2010-03-30 19:53:30 UTC (rev 27880)
@@ -1236,11 +1236,17 @@
#define LIBTAG(a) if(a && a->id.lib) {a->id.flag &=~LIB_INDIRECT; a->id.flag |= LIB_EXTERN;}
-static void lib_indirect_test_id(ID *id)
+static void lib_indirect_test_id(ID *id, Library *lib)
{
- if(id->lib)
+ if(id->lib) {
+ /* datablocks that were indirectly related are now direct links
+ * without this, appending data that has a link to other data will fail to write */
+ if(lib && id->lib->parent == lib) {
+ id_lib_extern(id);
+ }
return;
+ }
if(GS(id->name)==ID_OB) {
Object *ob= (Object *)id;
@@ -1336,7 +1342,7 @@
a= set_listbasepointers(G.main, lbarray);
while(a--) {
for(id= lbarray[a]->first; id; id=id->next)
- lib_indirect_test_id(id);
+ lib_indirect_test_id(id, lib);
}
}
Modified: branches/render25/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/render25/source/blender/blenloader/intern/readfile.c 2010-03-30 18:36:33 UTC (rev 27879)
+++ branches/render25/source/blender/blenloader/intern/readfile.c 2010-03-30 19:53:30 UTC (rev 27880)
@@ -12172,8 +12172,8 @@
if(fd==NULL) {
/* printf and reports for now... its important users know this */
- printf("read library: %s\n", mainptr->curlib->name);
- BKE_reportf(basefd->reports, RPT_INFO, "read library: '%s'\n", mainptr->curlib->name);
+ printf("read library: '%s', '%s'\n", mainptr->curlib->filename, mainptr->curlib->name);
+ BKE_reportf(basefd->reports, RPT_INFO, "read library: '%s', '%s'\n", mainptr->curlib->filename, mainptr->curlib->name);
fd= blo_openblenderfile(mainptr->curlib->filename, basefd->reports);
More information about the Bf-blender-cvs
mailing list