Fix sculpt/paint missing undo-step limiting
This commit is contained in:
parent
95a47ff226
commit
0cd9b1243c
|
@ -152,6 +152,8 @@ void BKE_undosys_stack_init_from_context(UndoStack *ustack, struct bContext *C);
|
|||
UndoStep *BKE_undosys_stack_active_with_type(UndoStack *ustack, const UndoType *ut);
|
||||
UndoStep *BKE_undosys_stack_init_or_active_with_type(UndoStack *ustack, const UndoType *ut);
|
||||
void BKE_undosys_stack_limit_steps_and_memory(UndoStack *ustack, int steps, size_t memory_limit);
|
||||
#define BKE_undosys_stack_limit_steps_and_memory_defaults(ustack) \
|
||||
BKE_undosys_stack_limit_steps_and_memory(ustack, U.undosteps, (size_t)U.undomemory * 1024 * 1024)
|
||||
|
||||
/* Only some UndoType's require init. */
|
||||
UndoStep *BKE_undosys_step_push_init_with_type(UndoStack *ustack,
|
||||
|
|
|
@ -399,7 +399,7 @@ UndoStep *BKE_undosys_stack_init_or_active_with_type(UndoStack *ustack, const Un
|
|||
void BKE_undosys_stack_limit_steps_and_memory(UndoStack *ustack, int steps, size_t memory_limit)
|
||||
{
|
||||
UNDO_NESTED_ASSERT(false);
|
||||
if (!(steps || memory_limit)) {
|
||||
if ((steps == -1) && (memory_limit != 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -416,7 +416,7 @@ void BKE_undosys_stack_limit_steps_and_memory(UndoStack *ustack, int steps, size
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (steps) {
|
||||
if (steps != -1) {
|
||||
if (us_count == steps) {
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -179,6 +179,7 @@ void ED_paintcurve_undo_push_end(void)
|
|||
{
|
||||
UndoStack *ustack = ED_undo_stack_get();
|
||||
BKE_undosys_step_push(ustack, NULL, NULL);
|
||||
BKE_undosys_stack_limit_steps_and_memory_defaults(ustack);
|
||||
WM_file_tag_modified();
|
||||
}
|
||||
|
||||
|
|
|
@ -1332,6 +1332,9 @@ void SCULPT_undo_push_end_ex(const bool use_nested_undo)
|
|||
if (wm->op_undo_depth == 0 || use_nested_undo) {
|
||||
UndoStack *ustack = ED_undo_stack_get();
|
||||
BKE_undosys_step_push(ustack, NULL, NULL);
|
||||
if (wm->op_undo_depth == 0) {
|
||||
BKE_undosys_stack_limit_steps_and_memory_defaults(ustack);
|
||||
}
|
||||
WM_file_tag_modified();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1083,6 +1083,7 @@ void ED_image_undo_push_end(void)
|
|||
{
|
||||
UndoStack *ustack = ED_undo_stack_get();
|
||||
BKE_undosys_step_push(ustack, NULL, NULL);
|
||||
BKE_undosys_stack_limit_steps_and_memory_defaults(ustack);
|
||||
WM_file_tag_modified();
|
||||
}
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ void ED_undo_push(bContext *C, const char *str)
|
|||
|
||||
if (U.undomemory != 0) {
|
||||
const size_t memory_limit = (size_t)U.undomemory * 1024 * 1024;
|
||||
BKE_undosys_stack_limit_steps_and_memory(wm->undo_stack, 0, memory_limit);
|
||||
BKE_undosys_stack_limit_steps_and_memory(wm->undo_stack, -1, memory_limit);
|
||||
}
|
||||
|
||||
if (CLOG_CHECK(&LOG, 1)) {
|
||||
|
|
Loading…
Reference in New Issue