[Bf-blender-cvs] [c292b4e] master: Fix T46456: Crash when aborting stroke while using dyntopo.

Bastien Montagne noreply at git.blender.org
Mon Jan 25 20:28:55 CET 2016


Commit: c292b4ebb9152c2231e7d50417e35549cc58a656
Author: Bastien Montagne
Date:   Mon Jan 25 20:22:30 2016 +0100
Branches: master
https://developer.blender.org/rBc292b4ebb9152c2231e7d50417e35549cc58a656

Fix T46456: Crash when aborting stroke while using dyntopo.

Basically, the 'fake undo' restoring orig coordinates in this case cannot work with dyntopo,
since it assumes nothing was added/removed.

For now, just prevent this 'restoration' when dyntopo is used, this is no ideal solution
from user PoV - but it's better than plain ugly crash!

Complete solution seems much more involved and outside of scope of bug handling, added a TODO note:
http://wiki.blender.org/index.php/Dev:Source/Development/Todo/Tools#Sculpting

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

M	source/blender/editors/sculpt_paint/sculpt.c

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

diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index 73f829a..7cc7041 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -4817,8 +4817,11 @@ static void sculpt_brush_stroke_cancel(bContext *C, wmOperator *op)
 	Object *ob = CTX_data_active_object(C);
 	SculptSession *ss = ob->sculpt;
 	Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
+	const Brush *brush = BKE_paint_brush(&sd->paint);
 
-	if (ss->cache) {
+	/* XXX Cancelling strokes that way does not work with dynamic topology, user will have to do real undo for now.
+	 *     See T46456. */
+	if (ss->cache && !sculpt_stroke_is_dynamic_topology(ss, brush)) {
 		paint_mesh_restore_co(sd, ob);
 	}




More information about the Bf-blender-cvs mailing list