diff --git a/source/blender/editors/space_outliner/outliner_intern.h b/source/blender/editors/space_outliner/outliner_intern.h index d8d10519bd6..f73c031dc7f 100644 --- a/source/blender/editors/space_outliner/outliner_intern.h +++ b/source/blender/editors/space_outliner/outliner_intern.h @@ -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 diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c index 8a31305d65e..097823135f3 100644 --- a/source/blender/editors/space_outliner/outliner_tree.c +++ b/source/blender/editors/space_outliner/outliner_tree.c @@ -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; diff --git a/source/blenderplayer/CMakeLists.txt b/source/blenderplayer/CMakeLists.txt index 7edf5314821..cfccd92ef86 100644 --- a/source/blenderplayer/CMakeLists.txt +++ b/source/blenderplayer/CMakeLists.txt @@ -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