From 66a40779271b55498216cc14b4df3ca8d575137c Mon Sep 17 00:00:00 2001 From: "Sv. Lockal" Date: Sat, 3 Aug 2013 11:35:09 +0000 Subject: fix for [#36260] 2,300 Objects Makes Blender Unresponsive MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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. --- source/blender/blenkernel/intern/object.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'source/blender/blenkernel/intern/object.c') diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 8ac067c0316..7aa23dc6c2b 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -678,9 +678,10 @@ void BKE_object_unlink(Object *ob) SpaceOops *so = (SpaceOops *)sl; if (so->treestore) { - TreeStoreElem *tselem = so->treestore->data; - int i; - for (i = 0; i < so->treestore->usedelem; i++, tselem++) { + TreeStoreElem *tselem; + BLI_mempool_iter iter; + BLI_mempool_iternew(so->treestore, &iter); + while ((tselem = BLI_mempool_iterstep(&iter))) { if (tselem->id == (ID *)ob) tselem->id = NULL; } } -- cgit v1.2.3