Fix #36082: animation playback not working after rendering of background scenes and

multiple render layer nodes. Also fixes issue with database free with vector blur
after recent thread safety changes.
This commit is contained in:
Brecht Van Lommel 2013-07-10 16:46:13 +00:00
parent 930dde34a3
commit 990cad983b
2 changed files with 7 additions and 10 deletions

@ -684,12 +684,9 @@ void BKE_scene_set_background(Main *bmain, Scene *scene)
} }
} }
/* sort baselist */ /* sort baselist for scene and sets */
DAG_scene_relations_rebuild(bmain, scene);
/* ensure dags are built for sets */
for (sce = scene; sce; sce = sce->set) for (sce = scene; sce; sce = sce->set)
DAG_scene_relations_update(bmain, sce); DAG_scene_relations_rebuild(bmain, sce);
/* copy layers and flags from bases to objects */ /* copy layers and flags from bases to objects */
for (base = scene->base.first; base; base = base->next) { for (base = scene->base.first; base; base = base->next) {

@ -5403,12 +5403,10 @@ void RE_Database_Preprocess(Render *re)
volume_precache(re); volume_precache(re);
} }
if (re->test_break(re->tbh)) { re->i.convertdone = TRUE;
re->i.convertdone = TRUE;
if (re->test_break(re->tbh))
RE_Database_Free(re); RE_Database_Free(re);
}
else
re->i.convertdone = TRUE;
re->i.infostr = NULL; re->i.infostr = NULL;
re->stats_draw(re->sdh, &re->i); re->stats_draw(re->sdh, &re->i);
@ -5858,6 +5856,7 @@ void RE_Database_FromScene_Vectors(Render *re, Main *bmain, Scene *sce, unsigned
/* free dbase and make the future one */ /* free dbase and make the future one */
strandsurface= re->strandsurface; strandsurface= re->strandsurface;
memset(&re->strandsurface, 0, sizeof(ListBase)); memset(&re->strandsurface, 0, sizeof(ListBase));
re->i.convertdone = TRUE;
RE_Database_Free(re); RE_Database_Free(re);
re->strandsurface= strandsurface; re->strandsurface= strandsurface;
@ -5873,6 +5872,7 @@ void RE_Database_FromScene_Vectors(Render *re, Main *bmain, Scene *sce, unsigned
/* free dbase and make the real one */ /* free dbase and make the real one */
strandsurface= re->strandsurface; strandsurface= re->strandsurface;
memset(&re->strandsurface, 0, sizeof(ListBase)); memset(&re->strandsurface, 0, sizeof(ListBase));
re->i.convertdone = TRUE;
RE_Database_Free(re); RE_Database_Free(re);
re->strandsurface= strandsurface; re->strandsurface= strandsurface;