diff options
Diffstat (limited to 'source/blender/editors/sculpt_paint')
-rw-r--r-- | source/blender/editors/sculpt_paint/sculpt_undo.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c index bc22147b15d..61f7c3bd0d9 100644 --- a/source/blender/editors/sculpt_paint/sculpt_undo.c +++ b/source/blender/editors/sculpt_paint/sculpt_undo.c @@ -931,9 +931,10 @@ SculptUndoNode *sculpt_undo_push_node( unode = sculpt_undo_alloc_node(ob, node, type); - BLI_thread_unlock(LOCK_CUSTOM1); - - /* copy threaded, hopefully this is the performance critical part */ + /* NOTE: If this ever becomes a bottleneck, make a lock inside of the node. + * so we release global lock sooner, but keep data locked for until it is + * fully initialized. + */ if (unode->grids) { int totgrid, *grids; @@ -970,6 +971,8 @@ SculptUndoNode *sculpt_undo_push_node( if (ss->kb) BLI_strncpy(unode->shapeName, ss->kb->name, sizeof(ss->kb->name)); else unode->shapeName[0] = '\0'; + BLI_thread_unlock(LOCK_CUSTOM1); + return unode; } |