Fix for sounds with relative paths not being loaded correctly.

This commit is contained in:
Joerg Mueller 2009-08-27 09:52:41 +00:00
parent 55f82852ca
commit 12a0f2c098
3 changed files with 9 additions and 18 deletions

@ -331,11 +331,7 @@ BlendFileData *BLO_read_from_file(char *file, ReportList *reports)
fd = blo_openblenderfile(file, reports); fd = blo_openblenderfile(file, reports);
if (fd) { if (fd) {
fd->reports= reports; fd->reports= reports;
bfd= blo_read_file_internal(fd); bfd= blo_read_file_internal(fd, file);
if (bfd) {
bfd->type= BLENFILETYPE_BLEND;
strncpy(bfd->main->name, file, sizeof(bfd->main->name)-1);
}
blo_freefiledata(fd); blo_freefiledata(fd);
} }
@ -350,11 +346,7 @@ BlendFileData *BLO_read_from_memory(void *mem, int memsize, ReportList *reports)
fd = blo_openblendermemory(mem, memsize, reports); fd = blo_openblendermemory(mem, memsize, reports);
if (fd) { if (fd) {
fd->reports= reports; fd->reports= reports;
bfd= blo_read_file_internal(fd); bfd= blo_read_file_internal(fd, "");
if (bfd) {
bfd->type= BLENFILETYPE_BLEND;
strcpy(bfd->main->name, "");
}
blo_freefiledata(fd); blo_freefiledata(fd);
} }
@ -383,11 +375,7 @@ BlendFileData *BLO_read_from_memfile(Main *oldmain, const char *filename, MemFil
/* makes lookup of existing images in old main */ /* makes lookup of existing images in old main */
blo_make_image_pointer_map(fd, oldmain); blo_make_image_pointer_map(fd, oldmain);
bfd= blo_read_file_internal(fd); bfd= blo_read_file_internal(fd, "");
if (bfd) {
bfd->type= BLENFILETYPE_BLEND;
strcpy(bfd->main->name, "");
}
/* ensures relinked images are not freed */ /* ensures relinked images are not freed */
blo_end_image_pointer_map(fd, oldmain); blo_end_image_pointer_map(fd, oldmain);

@ -9700,7 +9700,7 @@ static BHead *read_userdef(BlendFileData *bfd, FileData *fd, BHead *bhead)
return bhead; return bhead;
} }
BlendFileData *blo_read_file_internal(FileData *fd) BlendFileData *blo_read_file_internal(FileData *fd, char *file)
{ {
BHead *bhead= blo_firstbhead(fd); BHead *bhead= blo_firstbhead(fd);
BlendFileData *bfd; BlendFileData *bfd;
@ -9711,6 +9711,9 @@ BlendFileData *blo_read_file_internal(FileData *fd)
bfd->main->versionfile= fd->fileversion; bfd->main->versionfile= fd->fileversion;
bfd->type= BLENFILETYPE_BLEND;
strncpy(bfd->main->name, file, sizeof(bfd->main->name)-1);
while(bhead) { while(bhead) {
switch(bhead->code) { switch(bhead->code) {
case DATA: case DATA:
@ -11131,7 +11134,7 @@ BlendFileData *blo_read_blendafterruntime(int file, char *name, int actualsize,
return NULL; return NULL;
fd->reports= reports; fd->reports= reports;
bfd= blo_read_file_internal(fd); bfd= blo_read_file_internal(fd, "");
blo_freefiledata(fd); blo_freefiledata(fd);
return bfd; return bfd;

@ -108,7 +108,7 @@ struct Main;
void blo_join_main(ListBase *mainlist); void blo_join_main(ListBase *mainlist);
void blo_split_main(ListBase *mainlist, struct Main *main); void blo_split_main(ListBase *mainlist, struct Main *main);
BlendFileData *blo_read_file_internal(FileData *fd); BlendFileData *blo_read_file_internal(FileData *fd, char *file);
FileData *blo_openblenderfile(char *name, struct ReportList *reports); FileData *blo_openblenderfile(char *name, struct ReportList *reports);
FileData *blo_openblendermemory(void *buffer, int buffersize, struct ReportList *reports); FileData *blo_openblendermemory(void *buffer, int buffersize, struct ReportList *reports);