forked from bartvdbraak/blender
remove NULL check in TREESTORE macro, the return NULL value wasny checked for by any callers (ie - it would crash later if the arg was NULL anyway)
also comment on the speed of check_persistent()
This commit is contained in:
parent
8c51ecaf90
commit
d4b6927179
@ -110,7 +110,7 @@ typedef struct TreeElement {
|
||||
/* get TreeStoreElem associated with a TreeElement
|
||||
* < a: (TreeElement) tree element to find stored element for
|
||||
*/
|
||||
#define TREESTORE(a) ((a) ? soops->treestore->data + (a)->store_index : NULL)
|
||||
#define TREESTORE(a) (soops->treestore->data + (a)->store_index)
|
||||
|
||||
/* size constants */
|
||||
#define OL_Y_OFFSET 2
|
||||
|
@ -132,6 +132,14 @@ static void outliner_storage_cleanup(SpaceOops *soops)
|
||||
}
|
||||
}
|
||||
|
||||
/* XXX - THIS FUNCTION IS INCREDIBLY SLOW
|
||||
* ... it can bring blenders tools and viewport to a grinding halt becuase of searching
|
||||
* for duplicate items every times they are added.
|
||||
*
|
||||
* TODO (possible speedups)
|
||||
* - use a hash for duplicate (could even store a hash per type)
|
||||
* - use mempool for TreeElements
|
||||
* */
|
||||
static void check_persistent(SpaceOops *soops, TreeElement *te, ID *id, short type, short nr)
|
||||
{
|
||||
TreeStore *ts;
|
||||
@ -147,8 +155,8 @@ static void check_persistent(SpaceOops *soops, TreeElement *te, ID *id, short ty
|
||||
/* check if 'te' is in treestore */
|
||||
tselem = ts->data;
|
||||
for (a = 0; a < ts->usedelem; a++, tselem++) {
|
||||
if (tselem->id == id && tselem->used == 0) {
|
||||
if ((type == 0 && tselem->type == 0) || (tselem->type == type && tselem->nr == nr)) {
|
||||
if ((tselem->used == 0) && (tselem->type == type) && (tselem->id == id)) {
|
||||
if ((type == 0) || (tselem->nr == nr)) {
|
||||
te->store_index = a;
|
||||
tselem->used = 1;
|
||||
return;
|
||||
|
@ -1,4 +1,3 @@
|
||||
# -*- mode: cmake; indent-tabs-mode: t; -*-
|
||||
# ***** BEGIN GPL LICENSE BLOCK *****
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
|
Loading…
Reference in New Issue
Block a user