[Bf-blender-cvs] [555d57dade8] temp-workspace-addons: Workspace addon reading
Campbell Barton
noreply at git.blender.org
Thu Feb 1 04:43:23 CET 2018
Commit: 555d57dade831a18657e2d88055674db3f21318e
Author: Campbell Barton
Date: Thu Feb 1 14:44:30 2018 +1100
Branches: temp-workspace-addons
https://developer.blender.org/rB555d57dade831a18657e2d88055674db3f21318e
Workspace addon reading
===================================================================
M source/blender/blenkernel/BKE_blender.h
M source/blender/blenkernel/intern/blender.c
M source/blender/blenkernel/intern/workspace.c
M source/blender/blenloader/intern/readfile.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index 647291382ef..33e6621b282 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -60,6 +60,8 @@ void BKE_blender_userdef_data_duplicate(struct UserDef *userdef_dst, struct User
void BKE_blender_userdef_data_free(struct UserDef *userdef, bool clear_fonts);
+void BKE_blender_addons_free_list(struct ListBase *addons_list);
+
/* set this callback when a UI is running */
void BKE_blender_callback_test_break_set(void (*func)(void));
int BKE_blender_test_break(void);
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index 182b88c1c57..166e758c393 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -198,9 +198,9 @@ static void userdef_free_keymaps(UserDef *userdef)
BLI_listbase_clear(&userdef->user_keymaps);
}
-static void userdef_free_addons(UserDef *userdef)
+void BKE_blender_addons_free_list(ListBase *addons_list)
{
- for (bAddon *addon = userdef->addons.first, *addon_next; addon; addon = addon_next) {
+ for (bAddon *addon = addons_list->first, *addon_next; addon; addon = addon_next) {
addon_next = addon->next;
if (addon->prop) {
IDP_FreeProperty(addon->prop);
@@ -208,7 +208,7 @@ static void userdef_free_addons(UserDef *userdef)
}
MEM_freeN(addon);
}
- BLI_listbase_clear(&userdef->addons);
+ BLI_listbase_clear(addons_list);
}
/**
@@ -222,7 +222,7 @@ void BKE_blender_userdef_data_free(UserDef *userdef, bool clear_fonts)
#endif
userdef_free_keymaps(userdef);
- userdef_free_addons(userdef);
+ BKE_blender_addons_free_list(&userdef->addons);
if (clear_fonts) {
for (uiFont *font = userdef->uifonts.first; font; font = font->next) {
diff --git a/source/blender/blenkernel/intern/workspace.c b/source/blender/blenkernel/intern/workspace.c
index 8554cf0fb28..fb8a40a4a88 100644
--- a/source/blender/blenkernel/intern/workspace.c
+++ b/source/blender/blenkernel/intern/workspace.c
@@ -33,6 +33,7 @@
#include "BLI_string_utils.h"
#include "BLI_listbase.h"
+#include "BKE_blender.h"
#include "BKE_global.h"
#include "BKE_library.h"
#include "BKE_main.h"
@@ -169,6 +170,8 @@ void BKE_workspace_free(WorkSpace *workspace)
BLI_freelistN(&workspace->layouts);
BLI_freelistN(&workspace->transform_orientations);
+ BKE_blender_addons_free_list(&workspace->addons);
+
BKE_viewrender_free(&workspace->view_render);
}
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 236b14af8b0..b40b4684323 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -2898,12 +2898,21 @@ static void lib_link_workspaces(FileData *fd, Main *bmain)
}
}
+static void direct_link_addon_list(FileData *fd, ListBase *addon_list)
+{
+ for (bAddon *addon = addon_list->first; addon; addon = addon->next) {
+ addon->prop = newdataadr(fd, addon->prop);
+ IDP_DirectLinkGroup_OrFree(&addon->prop, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
+ }
+}
+
static void direct_link_workspace(FileData *fd, WorkSpace *workspace, const Main *main)
{
link_list(fd, BKE_workspace_layouts_get(workspace));
link_list(fd, &workspace->hook_layout_relations);
link_list(fd, &workspace->scene_viewlayer_relations);
link_list(fd, BKE_workspace_transform_orientations_get(workspace));
+ link_list(fd, &workspace->addons);
for (WorkSpaceDataRelation *relation = workspace->hook_layout_relations.first;
relation;
@@ -2929,6 +2938,8 @@ static void direct_link_workspace(FileData *fd, WorkSpace *workspace, const Main
}
}
}
+
+ direct_link_addon_list(fd, &workspace->addons);
}
static void lib_link_workspace_instance_hook(FileData *fd, WorkSpaceInstanceHook *hook, ID *id)
@@ -8856,7 +8867,6 @@ static BHead *read_userdef(BlendFileData *bfd, FileData *fd, BHead *bhead)
wmKeyMap *keymap;
wmKeyMapItem *kmi;
wmKeyMapDiffItem *kmdi;
- bAddon *addon;
bfd->user = user= read_struct(fd, bhead, "user def");
@@ -8900,10 +8910,7 @@ static BHead *read_userdef(BlendFileData *bfd, FileData *fd, BHead *bhead)
direct_link_keymapitem(fd, kmi);
}
- for (addon = user->addons.first; addon; addon = addon->next) {
- addon->prop = newdataadr(fd, addon->prop);
- IDP_DirectLinkGroup_OrFree(&addon->prop, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
- }
+ direct_link_addon_list(fd, &user->addons);
// XXX
user->uifonts.first = user->uifonts.last= NULL;
More information about the Bf-blender-cvs
mailing list