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:
-rw-r--r--source/blender/editors/space_outliner/outliner_intern.h2
-rw-r--r--source/blender/editors/space_outliner/outliner_tree.c12
-rw-r--r--source/blenderplayer/CMakeLists.txt1
3 files changed, 11 insertions, 4 deletions
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