This commit is contained in:
2011-09-09 12:21:41 +00:00
111 changed files with 13060 additions and 8645 deletions

View File

@@ -324,17 +324,14 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, const char *filepath
MEM_freeN(bfd);
}
static int handle_subversion_warning(Main *main)
static int handle_subversion_warning(Main *main, ReportList *reports)
{
if(main->minversionfile > BLENDER_VERSION ||
(main->minversionfile == BLENDER_VERSION &&
main->minsubversionfile > BLENDER_SUBVERSION)) {
char str[128];
BLI_snprintf(str, sizeof(str), "File written by newer Blender binary: %d.%d , expect loss of data!", main->minversionfile, main->minsubversionfile);
// XXX error(str);
BKE_reportf(reports, RPT_ERROR, "File written by newer Blender binary: %d.%d , expect loss of data!", main->minversionfile, main->minsubversionfile);
}
return 1;
}
@@ -392,7 +389,7 @@ int BKE_read_file(bContext *C, const char *filepath, ReportList *reports)
if (bfd) {
if(bfd->user) retval= BKE_READ_FILE_OK_USERPREFS;
if(0==handle_subversion_warning(bfd->main)) {
if(0==handle_subversion_warning(bfd->main, reports)) {
free_main(bfd->main);
MEM_freeN(bfd);
bfd= NULL;

View File

@@ -398,6 +398,11 @@ bNode *nodeCopyNode(struct bNodeTree *ntree, struct bNode *node)
sock->stack_index= 0;
sock->default_value = (oldsock->default_value ? MEM_dupallocN(oldsock->default_value) : NULL);
/* XXX some compositor node (e.g. image, render layers) still store
* some persistent buffer data here, need to clear this to avoid dangling pointers.
*/
sock->cache = NULL;
}
BLI_duplicatelist(&nnode->outputs, &node->outputs);
@@ -407,6 +412,11 @@ bNode *nodeCopyNode(struct bNodeTree *ntree, struct bNode *node)
sock->stack_index= 0;
sock->default_value = (oldsock->default_value ? MEM_dupallocN(oldsock->default_value) : NULL);
/* XXX some compositor node (e.g. image, render layers) still store
* some persistent buffer data here, need to clear this to avoid dangling pointers.
*/
sock->cache = NULL;
}
/* don't increase node->id users, freenode doesn't decrement either */
@@ -1524,21 +1534,25 @@ void NodeTagChanged(bNodeTree *ntree, bNode *node)
{
bNodeTreeType *ntreetype = ntreeGetType(ntree->type);
if (ntreetype->update_node)
/* extra null pointer checks here because this is called when unlinking
unknown nodes on file load, so typeinfo pointers may not be set */
if (ntreetype && ntreetype->update_node)
ntreetype->update_node(ntree, node);
else if (node->typeinfo->updatefunc)
else if (node->typeinfo && node->typeinfo->updatefunc)
node->typeinfo->updatefunc(ntree, node);
}
int NodeTagIDChanged(bNodeTree *ntree, ID *id)
{
bNodeTreeType *ntreetype = ntreeGetType(ntree->type);
bNodeTreeType *ntreetype;
bNode *node;
int change = FALSE;
if(ELEM(NULL, id, ntree))
return change;
ntreetype = ntreeGetType(ntree->type);
if (ntreetype->update_node) {
for(node= ntree->nodes.first; node; node= node->next) {
if(node->id==id) {