[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55823] trunk/blender/source/blender/ editors/util/undo.c: Bug fix #34866

Ton Roosendaal ton at blender.org
Fri Apr 5 19:10:28 CEST 2013


Revision: 55823
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55823
Author:   ton
Date:     2013-04-05 17:10:28 +0000 (Fri, 05 Apr 2013)
Log Message:
-----------
Bug fix #34866

Global undo/redo now clears the local undo editmode stack entirely.

Error goes back to the 2.3 days, when undo was added.

Global undo refreshes the entire internal database, so all ID pointers get invalid.
This cases editmode undo storage to fail, if it uses ID pointers as well.

The error was that for any Mesh undo stack, a single global undo would make the
mesh stack corrupt. Back in edit mode, on undo you'd lose assigned texture images, 
or get bad crashes.

The downside is that people expect this to work... it's a fun feature to maintain
stacks separately. Having this instable is not acceptable though. Needs quite some
redesign work to solve it (like Dalai's kill-the-tface project :)

Modified Paths:
--------------
    trunk/blender/source/blender/editors/util/undo.c

Modified: trunk/blender/source/blender/editors/util/undo.c
===================================================================
--- trunk/blender/source/blender/editors/util/undo.c	2013-04-05 17:03:59 UTC (rev 55822)
+++ trunk/blender/source/blender/editors/util/undo.c	2013-04-05 17:10:28 UTC (rev 55823)
@@ -186,6 +186,11 @@
 			//#ifdef WITH_PYTHON
 			// XXX		BPY_scripts_clear_pyobjects();
 			//#endif
+			
+			/* for global undo/redo we should just clear the editmode stack */
+			/* for example, texface stores image pointers */
+			undo_editmode_clear();
+			
 			if (undoname)
 				BKE_undo_name(C, undoname);
 			else




More information about the Bf-blender-cvs mailing list