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:
authorCampbell Barton <ideasman42@gmail.com>2017-03-20 04:42:19 +0300
committerCampbell Barton <ideasman42@gmail.com>2017-03-20 04:42:19 +0300
commitdbc8b81ecfc127bea0eed7dbcb9dc429c89966eb (patch)
tree9cb7b8805ad4778596b0c1a5d8045afac74d2906
parenteaf88f564c7e68a71ea43c667ed8a1396f182814 (diff)
User Preferences: Split out addon and keymap free
-rw-r--r--source/blender/blenkernel/intern/blender.c35
1 files changed, 24 insertions, 11 deletions
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index 1febeebf9ea..f661f18fbc0 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -157,17 +157,10 @@ void BKE_blender_userdef_set_data(UserDef *userdef)
U = *userdef;
}
-/**
- * When loading a new userdef from file,
- * or when exiting Blender.
- */
-void BKE_blender_userdef_free_data(UserDef *userdef)
+static void userdef_free_keymaps(UserDef *userdef)
{
-#define U _invalid_access_ /* ensure no accidental global access */
-#ifdef U /* quiet warning */
-#endif
-
- for (wmKeyMap *km = userdef->user_keymaps.first; km; km = km->next) {
+ for (wmKeyMap *km = userdef->user_keymaps.first, *km_next; km; km = km_next) {
+ km_next = km->next;
for (wmKeyMapDiffItem *kmdi = km->diff_items.first; kmdi; kmdi = kmdi->next) {
if (kmdi->add_item) {
keymap_item_free(kmdi->add_item);
@@ -185,8 +178,14 @@ void BKE_blender_userdef_free_data(UserDef *userdef)
BLI_freelistN(&km->diff_items);
BLI_freelistN(&km->items);
+
+ MEM_freeN(km);
}
+ BLI_listbase_clear(&userdef->user_keymaps);
+}
+static void userdef_free_addons(UserDef *userdef)
+{
for (bAddon *addon = userdef->addons.first, *addon_next; addon; addon = addon_next) {
addon_next = addon->next;
if (addon->prop) {
@@ -195,6 +194,21 @@ void BKE_blender_userdef_free_data(UserDef *userdef)
}
MEM_freeN(addon);
}
+ BLI_listbase_clear(&userdef->addons);
+}
+
+/**
+ * When loading a new userdef from file,
+ * or when exiting Blender.
+ */
+void BKE_blender_userdef_free_data(UserDef *userdef)
+{
+#define U _invalid_access_ /* ensure no accidental global access */
+#ifdef U /* quiet warning */
+#endif
+
+ userdef_free_keymaps(userdef);
+ userdef_free_addons(userdef);
for (uiFont *font = userdef->uifonts.first; font; font = font->next) {
BLF_unload_id(font->blf_id);
@@ -207,7 +221,6 @@ void BKE_blender_userdef_free_data(UserDef *userdef)
BLI_freelistN(&userdef->uistyles);
BLI_freelistN(&userdef->uifonts);
BLI_freelistN(&userdef->themes);
- BLI_freelistN(&userdef->user_keymaps);
#undef U
}