[Bf-blender-cvs] [9bf87bb96e8] lineart-fn-thread-loading: LineArt: Fix slight issues for threading object loading (DG still have problems)

YimingWu noreply at git.blender.org
Tue Jun 1 15:32:25 CEST 2021


Commit: 9bf87bb96e83b4aee43201cc42237fadca74608c
Author: YimingWu
Date:   Tue Mar 23 09:49:06 2021 +0800
Branches: lineart-fn-thread-loading
https://developer.blender.org/rB9bf87bb96e83b4aee43201cc42237fadca74608c

LineArt: Fix slight issues for threading object loading (DG still have problems)

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

M	source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c

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

diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
index e886101969b..06f662a4dec 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
@@ -1640,13 +1640,14 @@ static void lineart_geometry_object_load(Depsgraph *dg,
 
     orig_ob = ob->id.orig_id ? (Object *)ob->id.orig_id : ob;
 
-    BLI_spin_lock(rb->lock_task);
+    BLI_spin_lock(&rb->lock_task);
     reln = lineart_list_append_pointer_pool_sized(
         &rb->vertex_buffer_pointers, &rb->render_data_pool, orv, sizeof(LineartElementLinkNode));
-    BLI_spin_unlock(rb->lock_task);
+    BLI_spin_unlock(&rb->lock_task);
 
     reln->element_count = bm->totvert;
     reln->object_ref = orig_ob;
+    obi->v_reln = reln;
 
     if (ob->lineart.flags & OBJECT_LRT_OWN_CREASE) {
       use_crease = cosf(M_PI - ob->lineart.crease_threshold);
@@ -1661,10 +1662,10 @@ static void lineart_geometry_object_load(Depsgraph *dg,
       reln->flags |= LRT_ELEMENT_BORDER_ONLY;
     }
 
-    BLI_spin_lock(rb->lock_task);
+    BLI_spin_lock(&rb->lock_task);
     reln = lineart_list_append_pointer_pool_sized(
         &rb->triangle_buffer_pointers, &rb->render_data_pool, ort, sizeof(LineartElementLinkNode));
-    BLI_spin_unlock(rb->lock_task);
+    BLI_spin_unlock(&rb->lock_task);
     reln->element_count = bm->totface;
     reln->object_ref = orig_ob;
     reln->flags |= (usage == OBJECT_LRT_NO_INTERSECTION ? LRT_ELEMENT_NO_INTERSECTION : 0);
@@ -1742,10 +1743,10 @@ static void lineart_geometry_object_load(Depsgraph *dg,
     o_la_e = lineart_mem_aquire_thread(&rb->render_data_pool, sizeof(LineartEdge) * allocate_la_e);
     o_la_s = lineart_mem_aquire_thread(&rb->render_data_pool,
                                        sizeof(LineartLineSegment) * allocate_la_e);
-    BLI_spin_lock(rb->lock_task);
+    BLI_spin_lock(&rb->lock_task);
     reln = lineart_list_append_pointer_pool_sized(
         &rb->line_buffer_pointers, &rb->render_data_pool, o_la_e, sizeof(LineartElementLinkNode));
-    BLI_spin_unlock(rb->lock_task);
+    BLI_spin_unlock(&rb->lock_task);
     reln->element_count = allocate_la_e;
     reln->object_ref = orig_ob;
 
@@ -1975,6 +1976,9 @@ static void lineart_main_load_geometries(
 
   for (int i = 0; i < thread_count; i++) {
     for (LineartObjectInfo *obi = olti[i].pending; obi; obi = obi->next) {
+      if (!obi->v_reln) {
+        continue;
+      }
       LineartVert *v = (LineartVert *)obi->v_reln->pointer;
       int v_count = obi->v_reln->element_count;
       for (int vi = 0; vi < v_count; vi++) {



More information about the Bf-blender-cvs mailing list