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:
authorCampbell Barton <ideasman42@gmail.com>2018-12-02 00:13:31 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-12-02 02:15:22 +0300
commit8c620c8e2b3bf1f154f5d04e31e056bfc66d28df (patch)
treed28735e969c3fd7634d2e871b11dc4fcbd9ad259 /source/blender/blenkernel/intern/layer.c
parentd3940c2211463609d4fa2b8601c64b3f7744a1f8 (diff)
Optimize ghash usage
Avoid double hash calculation.
Diffstat (limited to 'source/blender/blenkernel/intern/layer.c')
-rw-r--r--source/blender/blenkernel/intern/layer.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index c591fa4bd80..1f2e54a6d39 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -681,12 +681,13 @@ static short layer_collection_sync(
continue;
}
- Base *base = BLI_ghash_lookup(view_layer->object_bases_hash, cob->ob);
-
- if (base) {
+ void **base_p;
+ Base *base;
+ if (BLI_ghash_ensure_p(view_layer->object_bases_hash, cob->ob, &base_p)) {
/* Move from old base list to new base list. Base might have already
* been moved to the new base list and the first/last test ensure that
* case also works. */
+ base = *base_p;
if (!ELEM(base, new_object_bases->first, new_object_bases->last)) {
BLI_remlink(&view_layer->object_bases, base);
BLI_addtail(new_object_bases, base);
@@ -695,8 +696,8 @@ static short layer_collection_sync(
else {
/* Create new base. */
base = object_base_new(cob->ob);
+ *base_p = base;
BLI_addtail(new_object_bases, base);
- BLI_ghash_insert(view_layer->object_bases_hash, base->object, base);
}
int object_restrict = base->object->restrictflag;