Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2005-01-05 13:31:27 +0300
committerTon Roosendaal <ton@blender.org>2005-01-05 13:31:27 +0300
commit776b2451e10963a07bf37e979d3c4b6e24a132f7 (patch)
tree5d38c71fe177e993a937be85411a7655312540b3
parent5b0815ca8e23be1b82a8b0139549395485c0398b (diff)
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.
-rw-r--r--source/blender/blenkernel/intern/blender.c5
-rw-r--r--source/blender/blenloader/intern/readfile.c7
-rw-r--r--source/blender/render/intern/source/rendercore.c6
3 files changed, 12 insertions, 6 deletions
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];