From 547cb5e264eb1f6b03c7327e1acae6e4f2b0187a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 19 Jan 2019 00:48:00 +1100 Subject: Fix/workaround: Undo erase all dyntopo changes Memfile undo isn't compatible with sculpt or edit-mode. This didn't work in 2.7x, so best disable memfile undo for now in situations where it's going to loose data or crash. --- source/blender/editors/undo/memfile_undo.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'source/blender/editors/undo/memfile_undo.c') diff --git a/source/blender/editors/undo/memfile_undo.c b/source/blender/editors/undo/memfile_undo.c index 1560c414c42..1b0fe9a0c3d 100644 --- a/source/blender/editors/undo/memfile_undo.c +++ b/source/blender/editors/undo/memfile_undo.c @@ -53,13 +53,21 @@ typedef struct MemFileUndoStep { MemFileUndoData *data; } MemFileUndoStep; -static bool memfile_undosys_poll(bContext *UNUSED(C)) +static bool memfile_undosys_poll(bContext *C) { /* other poll functions must run first, this is a catch-all. */ if ((U.uiflag & USER_GLOBALUNDO) == 0) { return false; } + + /* Allow a single memfile undo step (the first). */ + UndoStack *ustack = ED_undo_stack_get(); + if ((ustack->step_active != NULL) && + (ED_undo_is_memfile_compatible(C) == false)) + { + return false; + } return true; } -- cgit v1.2.3