diff options
Diffstat (limited to 'source/blender/blenkernel/intern/mask.c')
-rw-r--r-- | source/blender/blenkernel/intern/mask.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c index bda924060d5..a5241684e3a 100644 --- a/source/blender/blenkernel/intern/mask.c +++ b/source/blender/blenkernel/intern/mask.c @@ -57,6 +57,8 @@ #include "BKE_movieclip.h" #include "BKE_image.h" +#include "NOD_composite.h" + static MaskSplinePoint *mask_spline_point_next(MaskSpline *spline, MaskSplinePoint *points_array, MaskSplinePoint *point) { if (point == &points_array[spline->tot_point - 1]) { @@ -698,18 +700,18 @@ void BKE_mask_point_select_set_handle(MaskSplinePoint *point, const short do_sel } /* only mask block itself */ -static Mask *mask_alloc(const char *name) +static Mask *mask_alloc(Main *bmain, const char *name) { Mask *mask; - mask = BKE_libblock_alloc(&G.main->mask, ID_MSK, name); + mask = BKE_libblock_alloc(&bmain->mask, ID_MSK, name); mask->id.flag |= LIB_FAKEUSER; return mask; } -Mask *BKE_mask_new(const char *name) +Mask *BKE_mask_new(Main *bmain, const char *name) { Mask *mask; char mask_name[MAX_ID_NAME - 2]; @@ -719,7 +721,7 @@ Mask *BKE_mask_new(const char *name) else strcpy(mask_name, "Mask"); - mask = mask_alloc(mask_name); + mask = mask_alloc(bmain, mask_name); /* arbitrary defaults */ mask->sfra = 1; @@ -923,6 +925,8 @@ void BKE_mask_free(Main *bmain, Mask *mask) SpaceLink *sl; Scene *scene; + BKE_sequencer_clear_mask_in_clipboard(mask); + for (scr = bmain->screen.first; scr; scr = scr->id.next) { for (area = scr->areabase.first; area; area = area->next) { for (sl = area->spacedata.first; sl; sl = sl->next) { @@ -964,10 +968,9 @@ void BKE_mask_free(Main *bmain, Mask *mask) } } - { - bNodeTreeType *treetype = ntreeGetType(NTREE_COMPOSIT); - treetype->foreach_nodetree(bmain, (void *)mask, &BKE_node_tree_unlink_id_cb); - } + FOREACH_NODETREE(bmain, ntree, id) { + BKE_node_tree_unlink_id((ID *)mask, ntree); + } FOREACH_NODETREE_END /* free mask data */ BKE_mask_layer_free_list(&mask->masklayers); |