[Bf-blender-cvs] [5d5397ea007] hair_guides_grooming: Make groom drawing work in edit mode with COW.

Lukas Tönne noreply at git.blender.org
Sun May 27 14:53:16 CEST 2018


Commit: 5d5397ea0079708b69a76694dd9c87eb360c0d59
Author: Lukas Tönne
Date:   Sun May 27 13:50:40 2018 +0100
Branches: hair_guides_grooming
https://developer.blender.org/rB5d5397ea0079708b69a76694dd9c87eb360c0d59

Make groom drawing work in edit mode with COW.

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

M	source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc

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

diff --git a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
index 376e87b38a6..b8a4cdc7641 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
@@ -65,6 +65,7 @@ extern "C" {
 #include "DNA_ID.h"
 #include "DNA_anim_types.h"
 #include "DNA_armature_types.h"
+#include "DNA_groom_types.h"
 #include "DNA_mesh_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_object_types.h"
@@ -449,6 +450,14 @@ void updata_mesh_edit_mode_pointers(const Depsgraph *depsgraph,
 	mesh_cow->edit_btmesh->derivedCage = NULL;
 }
 
+void update_groom_edit_mode_pointers(const Depsgraph *UNUSED(depsgraph),
+                                     const ID *id_orig, ID *id_cow)
+{
+	const Groom *groom_orig = (const Groom *)id_orig;
+	Groom *groom_cow = (Groom *)id_cow;
+	groom_cow->editgroom = groom_orig->editgroom;
+}
+
 /* Edit data is stored and owned by original datablocks, copied ones
  * are simply referencing to them.
  */
@@ -466,6 +475,9 @@ void updata_edit_mode_pointers(const Depsgraph *depsgraph,
 		case ID_CU:
 			updata_curve_edit_mode_pointers(depsgraph, id_orig, id_cow);
 			break;
+		case ID_GM:
+			update_groom_edit_mode_pointers(depsgraph, id_orig, id_cow);
+			break;
 		default:
 			break;
 	}
@@ -823,6 +835,12 @@ void discard_mesh_edit_mode_pointers(ID *id_cow)
 	mesh_cow->edit_btmesh = NULL;
 }
 
+void discard_groom_edit_mode_pointers(ID *id_cow)
+{
+	Groom *groom_cow = (Groom *)id_cow;
+	groom_cow->editgroom = NULL;
+}
+
 /* NULL-ify all edit mode pointers which points to data from
  * original object.
  */
@@ -839,6 +857,9 @@ void discard_edit_mode_pointers(ID *id_cow)
 		case ID_CU:
 			discard_curve_edit_mode_pointers(id_cow);
 			break;
+		case ID_GM:
+			discard_groom_edit_mode_pointers(id_cow);
+			break;
 		default:
 			break;
 	}



More information about the Bf-blender-cvs mailing list