Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2020-09-18 07:17:17 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-09-18 07:38:23 +0300
commite6978f4d63d130b61de7d8f3bdc497750377ae71 (patch)
tree373e375ac54fc41835ae17e3fb8e6439e8ad6b6d /source/blender/editors/space_image/image_undo.c
parent14b2de37dbc3563164bb37fb6fe493bf77190948 (diff)
Fix T80885: Texture paint camera project crashes after undo/redo
Unmatched ED_image_undo_push_{begin/end}, add doc-strings noting why this is needed. Thanks to @Baardaap for the initial fix.
Diffstat (limited to 'source/blender/editors/space_image/image_undo.c')
-rw-r--r--source/blender/editors/space_image/image_undo.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/source/blender/editors/space_image/image_undo.c b/source/blender/editors/space_image/image_undo.c
index 27b84307f7d..7b1329793dc 100644
--- a/source/blender/editors/space_image/image_undo.c
+++ b/source/blender/editors/space_image/image_undo.c
@@ -1004,6 +1004,14 @@ void ED_image_undosys_type(UndoType *ut)
/* -------------------------------------------------------------------- */
/** \name Utilities
+ *
+ * \note image undo exposes #ED_image_undo_push_begin, #ED_image_undo_push_end
+ * which must be called by the operator directly.
+ *
+ * Unlike most other undo stacks this is needed:
+ * - So we can always access the state before the image was painted onto,
+ * which is needed if previous undo states aren't image-type.
+ * - So operators can access the pixel-data before the stroke was applied, at run-time.
* \{ */
ListBase *ED_image_paint_tile_list_get(void)
@@ -1041,6 +1049,10 @@ static ImageUndoStep *image_undo_push_begin(const char *name, int paint_mode)
return us;
}
+/**
+ * The caller is responsible for running #ED_image_undo_push_end,
+ * failure to do so causes an invalid state for the undo system.
+ */
void ED_image_undo_push_begin(const char *name, int paint_mode)
{
image_undo_push_begin(name, paint_mode);