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:
Diffstat (limited to 'source/blender/blenloader')
-rw-r--r--source/blender/blenloader/intern/readfile.c27
-rw-r--r--source/blender/blenloader/intern/writefile.c8
2 files changed, 31 insertions, 4 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 8a31016c6d8..358c99df3de 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -3862,6 +3862,25 @@ static void lib_link_all(FileData *fd, Main *main)
lib_link_library(fd, main); /* only init users */
}
+static BHead *read_userdef(BlendFileData *bfd, FileData *fd, BHead *bhead)
+{
+ Link *link;
+
+ bfd->user= read_struct(fd, bhead);
+ bfd->user->themes.first= bfd->user->themes.last= NULL;
+
+ bhead = blo_nextbhead(fd, bhead);
+
+ /* read all attached data */
+ while(bhead && bhead->code==DATA) {
+ link= read_struct(fd, bhead);
+ BLI_addtail(&bfd->user->themes, link);
+ bhead = blo_nextbhead(fd, bhead);
+ }
+
+ return bhead;
+}
+
BlendFileData *blo_read_file_internal(FileData *fd, BlendReadError *error_r)
{
BHead *bhead= blo_firstbhead(fd);
@@ -3881,14 +3900,14 @@ BlendFileData *blo_read_file_internal(FileData *fd, BlendReadError *error_r)
case DNA1:
case TEST:
case REND:
- case USER:
- if (bhead->code==USER) {
- bfd->user= read_struct(fd, bhead);
- } else if (bhead->code==GLOB) {
+ if (bhead->code==GLOB) {
fg= read_struct(fd, bhead);
}
bhead = blo_nextbhead(fd, bhead);
break;
+ case USER:
+ bhead= read_userdef(bfd, fd, bhead);
+ break;
case ENDB:
bhead = NULL;
break;
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 03316bf00e3..546ff3b60e6 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -472,7 +472,15 @@ static void write_renderinfo(WriteData *wd) /* for renderdaemon */
static void write_userdef(WriteData *wd)
{
+ bTheme *btheme;
+
writestruct(wd, USER, "UserDef", 1, &U);
+
+ btheme= U.themes.first;
+ while(btheme) {
+ writestruct(wd, DATA, "bTheme", 1, btheme);
+ btheme= btheme->next;
+ }
}
static void write_effects(WriteData *wd, ListBase *lb)