diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-09-24 04:05:02 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-09-24 04:05:02 +0400 |
commit | 701e57e11d0e6d6292c3ca876ccc286a3c4c2cea (patch) | |
tree | 6d21710c688f0967617612087948a1a18090113c /source/blender/editors/space_image/image_edit.c | |
parent | 2a0649d61d46a0105f8483049f4722d66cef45ae (diff) |
fix for issue where you could easily make zero user datablocks (especially with masks which default to fake user).
- Make mask
- assign to image editor
- disable fake user
This would make the image space reference a zero user mask datablock which wouldn't be saved.
solve the bug by making mask and image assignments check the real usercount of the ID block (not taking into account fake user).
Diffstat (limited to 'source/blender/editors/space_image/image_edit.c')
-rw-r--r-- | source/blender/editors/space_image/image_edit.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/source/blender/editors/space_image/image_edit.c b/source/blender/editors/space_image/image_edit.c index 92433449985..0d40a6ae007 100644 --- a/source/blender/editors/space_image/image_edit.c +++ b/source/blender/editors/space_image/image_edit.c @@ -78,8 +78,8 @@ void ED_space_image_set(SpaceImage *sima, Scene *scene, Object *obedit, Image *i if (sima->image) BKE_image_signal(sima->image, &sima->iuser, IMA_SIGNAL_USER_NEW_IMAGE); - if (sima->image && sima->image->id.us == 0) - sima->image->id.us = 1; + if (sima->image && ID_REAL_USERS(sima->image) <= 0) + sima->image->id.us = MAX2(sima->image->id.us, 0) + 1; if (obedit) WM_main_add_notifier(NC_GEOM | ND_DATA, obedit->data); @@ -97,8 +97,8 @@ void ED_space_image_set_mask(bContext *C, SpaceImage *sima, Mask *mask) sima->mask_info.mask = mask; /* weak, but same as image/space */ - if (sima->mask_info.mask && sima->mask_info.mask->id.us == 0) - sima->mask_info.mask->id.us = 1; + if (sima->mask_info.mask && ID_REAL_USERS(sima->mask_info.mask) <= 0) + sima->mask_info.mask->id.us = MAX2(sima->mask_info.mask->id.us, 0) + 1; if (C) { WM_event_add_notifier(C, NC_MASK | NA_SELECTED, mask); |