From 776b2451e10963a07bf37e979d3c4b6e24a132f7 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Wed, 5 Jan 2005 10:31:27 +0000 Subject: Bugfix #2095 When loading a file with linked external scene, and that external scene didnt exist anymore, and that scene was active in the file -> crash! Render code; changed to use local 'puno' flag for threaded render. --- source/blender/blenkernel/intern/blender.c | 5 +++++ source/blender/blenloader/intern/readfile.c | 7 ++++--- source/blender/render/intern/source/rendercore.c | 6 +++--- 3 files changed, 12 insertions(+), 6 deletions(-) (limited to 'source') diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c index db8653f0abe..9e8ac8ca8ea 100644 --- a/source/blender/blenkernel/intern/blender.c +++ b/source/blender/blenkernel/intern/blender.c @@ -325,6 +325,11 @@ static void setup_app_data(BlendFileData *bfd, char *filename) G.curscreen= bfd->curscreen; G.scene= G.curscreen->scene; } + /* this can happen when active scene was lib-linked, and doesnt exist anymore */ + if(G.scene==NULL) { + G.scene= G.main->scene.first; + G.curscreen->scene= G.scene; + } /* special cases, override loaded flags: */ if (G.f & G_DEBUG) bfd->globalf |= G_DEBUG; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 9efdb1f90f3..3a8fdb69d7a 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -5534,10 +5534,11 @@ static void read_libraries(FileData *basefd, ListBase *mainlist) fd->libmap= basefd->libmap; fd->flags|= FD_FLAGS_NOT_MY_LIBMAP; + + mainptr->curlib->filedata= fd; + mainptr->versionfile= fd->fileversion; } - - mainptr->curlib->filedata= fd; - mainptr->versionfile= fd->fileversion; + else mainptr->curlib->filedata= NULL; if (!fd) printf("ERROR: can't find lib %s \n", mainptr->curlib->name); diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index 4744a9664d9..a8a5136263a 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -1724,18 +1724,18 @@ void shade_input_set_coords(ShadeInput *shi, float u, float v, int i1, int i2, i if(vlr->flag & R_SMOOTH) { float n1[3], n2[3], n3[3]; - if(vlr->puno & p1) { + if(shi->puno & p1) { n1[0]= -v1->n[0]; n1[1]= -v1->n[1]; n1[2]= -v1->n[2]; } else { n1[0]= v1->n[0]; n1[1]= v1->n[1]; n1[2]= v1->n[2]; } - if(vlr->puno & p2) { + if(shi->puno & p2) { n2[0]= -v2->n[0]; n2[1]= -v2->n[1]; n2[2]= -v2->n[2]; } else { n2[0]= v2->n[0]; n2[1]= v2->n[1]; n2[2]= v2->n[2]; } - if(vlr->puno & p3) { + if(shi->puno & p3) { n3[0]= -v3->n[0]; n3[1]= -v3->n[1]; n3[2]= -v3->n[2]; } else { n3[0]= v3->n[0]; n3[1]= v3->n[1]; n3[2]= v3->n[2]; -- cgit v1.2.3