[Bf-blender-cvs] [7df2e83f80f] temp-lineart-embree: LineArt: Use reserve() before merging occlusion results.

YimingWu noreply at git.blender.org
Thu Mar 31 05:34:37 CEST 2022


Commit: 7df2e83f80fbdfb705d022064a061fe1d6dce34e
Author: YimingWu
Date:   Thu Mar 31 11:33:46 2022 +0800
Branches: temp-lineart-embree
https://developer.blender.org/rB7df2e83f80fbdfb705d022064a061fe1d6dce34e

LineArt: Use reserve() before merging occlusion results.

===================================================================

M	source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp

===================================================================

diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp
index 71319d34143..08eb0234b6f 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp
@@ -48,10 +48,16 @@ LineartOcclusionPair *lineart_thread_finalize_occlusion_result(
     LineartThreadOcclusionDataCombined **r_combined_storage)
 {
   Vector<LineartOcclusionPair> *result = new Vector<LineartOcclusionPair>;
+  int count = 0;
+  for (const Vector<LineartOcclusionPair> &local : (*(_LineartThreadOcclusionData *)data)) {
+    count += local.size();
+  }
+  /* Reserve once so it's faster to extend. */
+  result->reserve(count);
   for (const Vector<LineartOcclusionPair> &local : (*(_LineartThreadOcclusionData *)data)) {
     result->extend(local);
   }
-  *result_count = result->size();
+  *result_count = count;
   *r_combined_storage = (LineartThreadOcclusionDataCombined *)result;
   return (LineartOcclusionPair *)result->data();
 };



More information about the Bf-blender-cvs mailing list