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>2019-09-18 11:49:53 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-09-18 11:49:53 +0300
commite2cbf8b1174d512170f490f701c43213c874a717 (patch)
tree3d901e7c53908915a6f1c47cd64d91c3bbb7c730
parent8c0dea72b6791a07100487de556ab352106f7f44 (diff)
Cleanup: minor changes to paint undo
Use a shared tile freeing function.
-rw-r--r--source/blender/editors/sculpt_paint/paint_image_undo.c41
1 files changed, 18 insertions, 23 deletions
diff --git a/source/blender/editors/sculpt_paint/paint_image_undo.c b/source/blender/editors/sculpt_paint/paint_image_undo.c
index 93dcd3ad0f6..72001d8ee4c 100644
--- a/source/blender/editors/sculpt_paint/paint_image_undo.c
+++ b/source/blender/editors/sculpt_paint/paint_image_undo.c
@@ -272,26 +272,19 @@ void *image_undo_push_tile(ListBase *undo_tiles,
void image_undo_remove_masks(void)
{
ListBase *undo_tiles = ED_image_undo_get_tiles();
- UndoImageTile *tile;
-
- for (tile = undo_tiles->first; tile; tile = tile->next) {
- if (tile->mask) {
- MEM_freeN(tile->mask);
- tile->mask = NULL;
- }
+ for (UndoImageTile *tile = undo_tiles->first; tile; tile = tile->next) {
+ MEM_SAFE_FREE(tile->mask);
}
}
static void image_undo_restore_runtime(ListBase *lb)
{
- ImBuf *ibuf, *tmpibuf;
- UndoImageTile *tile;
-
- tmpibuf = IMB_allocImBuf(IMAPAINT_TILE_SIZE, IMAPAINT_TILE_SIZE, 32, IB_rectfloat | IB_rect);
+ ImBuf *tmpibuf = IMB_allocImBuf(
+ IMAPAINT_TILE_SIZE, IMAPAINT_TILE_SIZE, 32, IB_rectfloat | IB_rect);
- for (tile = lb->first; tile; tile = tile->next) {
+ for (UndoImageTile *tile = lb->first; tile; tile = tile->next) {
Image *ima = tile->image_ref.ptr;
- ibuf = BKE_image_acquire_ibuf(ima, NULL, NULL);
+ ImBuf *ibuf = BKE_image_acquire_ibuf(ima, NULL, NULL);
undo_copy_tile(tile, tmpibuf, ibuf, RESTORE);
@@ -316,7 +309,6 @@ static void image_undo_restore_list(ListBase *lb)
IMAPAINT_TILE_SIZE, IMAPAINT_TILE_SIZE, 32, IB_rectfloat | IB_rect);
for (UndoImageTile *tile = lb->first; tile; tile = tile->next) {
-
Image *ima = tile->image_ref.ptr;
ImBuf *ibuf = BKE_image_acquire_ibuf(ima, NULL, NULL);
@@ -369,21 +361,24 @@ static void image_undo_restore_list(ListBase *lb)
IMB_freeImBuf(tmpibuf);
}
+static void image_undo_free_tile(UndoImageTile *tile)
+{
+ MEM_freeN(tile->rect.pt);
+ MEM_freeN(tile);
+}
+
static void image_undo_free_list(ListBase *lb)
{
for (UndoImageTile *tile = lb->first, *tile_next; tile; tile = tile_next) {
tile_next = tile->next;
- MEM_freeN(tile->rect.pt);
- MEM_freeN(tile);
+ image_undo_free_tile(tile);
}
}
static void image_undo_invalidate(void)
{
- UndoImageTile *tile;
ListBase *lb = ED_image_undo_get_tiles();
-
- for (tile = lb->first; tile; tile = tile->next) {
+ for (UndoImageTile *tile = lb->first; tile; tile = tile->next) {
tile->valid = false;
}
}
@@ -444,10 +439,10 @@ static bool image_undosys_step_encode(struct bContext *C,
/* first dispose of invalid tiles (may happen due to drag dot for instance) */
for (UndoImageTile *tile = us->tiles.first; tile;) {
if (!tile->valid) {
- UndoImageTile *tmp_tile = tile->next;
- MEM_freeN(tile->rect.pt);
- BLI_freelinkN(&us->tiles, tile);
- tile = tmp_tile;
+ UndoImageTile *tile_next = tile->next;
+ BLI_remlink(&us->tiles, tile);
+ image_undo_free_tile(tile);
+ tile = tile_next;
}
else {
us->step.data_size += allocsize * (tile->use_float ? sizeof(float) : sizeof(char));