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:
authorSv. Lockal <lockalsash@gmail.com>2013-08-03 15:35:09 +0400
committerSv. Lockal <lockalsash@gmail.com>2013-08-03 15:35:09 +0400
commit66a40779271b55498216cc14b4df3ca8d575137c (patch)
treefdd0ed4df73ca2ecb9f3c58813e8338c53eedadb /source/blender/makesdna
parent91d148b8914bb198a78c3789fa39c2850d37d219 (diff)
fix for [#36260] 2,300 Objects Makes Blender Unresponsive
- performance of outliner was low because of unoptimal data structures. - now it uses BLI_mempool instead of custom mempool and GHash to make searches for duplicates faster. - also fix undesired behaviour of BLI_mempool_as_arrayN thanks to Campbell Barton and Lukas Tönne for helping me get a better fix put together.
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r--source/blender/makesdna/DNA_outliner_types.h9
-rw-r--r--source/blender/makesdna/DNA_space_types.h5
2 files changed, 11 insertions, 3 deletions
diff --git a/source/blender/makesdna/DNA_outliner_types.h b/source/blender/makesdna/DNA_outliner_types.h
index 5f9c90f09f7..53061b55e2d 100644
--- a/source/blender/makesdna/DNA_outliner_types.h
+++ b/source/blender/makesdna/DNA_outliner_types.h
@@ -32,6 +32,8 @@
#ifndef __DNA_OUTLINER_TYPES_H__
#define __DNA_OUTLINER_TYPES_H__
+#include "DNA_defs.h"
+
struct ID;
typedef struct TreeStoreElem {
@@ -39,9 +41,12 @@ typedef struct TreeStoreElem {
struct ID *id;
} TreeStoreElem;
+/* used only to store data in in blend files */
typedef struct TreeStore {
- int totelem, usedelem;
- TreeStoreElem *data;
+ int totelem DNA_DEPRECATED; /* was previously used for memory preallocation */
+ int usedelem; /* number of elements in data array */
+ TreeStoreElem *data; /* elements to be packed from mempool in writefile.c
+ * or extracted to mempool in readfile.c */
} TreeStore;
/* TreeStoreElem->flag */
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 2d87cb1d890..c562a1fefae 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -72,6 +72,8 @@ struct wmTimer;
struct MovieClip;
struct MovieClipScopes;
struct Mask;
+struct GHash;
+struct BLI_mempool;
/* SpaceLink (Base) ==================================== */
@@ -244,13 +246,14 @@ typedef struct SpaceOops {
View2D v2d DNA_DEPRECATED; /* deprecated, copied to region */
ListBase tree;
- struct TreeStore *treestore;
+ struct BLI_mempool *treestore;
/* search stuff */
char search_string[32];
struct TreeStoreElem search_tse;
short flag, outlinevis, storeflag, search_flags;
+ struct GHash *treehash;
} SpaceOops;