diff options
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_image.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/bpath.c | 5 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/image.c | 10 |
3 files changed, 13 insertions, 3 deletions
diff --git a/source/blender/blenkernel/BKE_image.h b/source/blender/blenkernel/BKE_image.h index 9e5a761d02d..b9f2123b2bd 100644 --- a/source/blender/blenkernel/BKE_image.h +++ b/source/blender/blenkernel/BKE_image.h @@ -325,6 +325,7 @@ void BKE_image_mark_dirty(struct Image *image, struct ImBuf *ibuf); int BKE_image_sequence_guess_offset(struct Image *image); bool BKE_image_has_anim(struct Image *image); bool BKE_image_has_packedfile(struct Image *image); +bool BKE_image_has_filepath(struct Image *ima); bool BKE_image_is_animated(struct Image *image); void BKE_image_file_format_set(struct Image *image, int ftype, diff --git a/source/blender/blenkernel/intern/bpath.c b/source/blender/blenkernel/intern/bpath.c index 6f0c1891b05..fa7af53df2d 100644 --- a/source/blender/blenkernel/intern/bpath.c +++ b/source/blender/blenkernel/intern/bpath.c @@ -450,7 +450,10 @@ void BKE_bpath_traverse_id( Image *ima; ima = (Image *)id; if (BKE_image_has_packedfile(ima) == false || (flag & BKE_BPATH_TRAVERSE_SKIP_PACKED) == 0) { - if (ELEM(ima->source, IMA_SRC_FILE, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) { + /* Skip empty file paths, these are typically from generated images and + * don't make sense to add directories to until the image has been saved + * once to give it a meaningful value. */ + if (ELEM(ima->source, IMA_SRC_FILE, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE) && ima->name[0]) { if (rewrite_path_fixed(ima->name, visit_cb, absbase, bpath_user_data)) { if (flag & BKE_BPATH_TRAVERSE_RELOAD_EDITED) { if (!BKE_image_has_packedfile(ima) && diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index 18c42da0bd4..d59ead25396 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -470,7 +470,7 @@ bool BKE_image_scale(Image *image, int width, int height) if (ibuf) { IMB_scaleImBuf(ibuf, width, height); - ibuf->userflags |= IB_BITMAPDIRTY; + BKE_image_mark_dirty(image, ibuf); } BKE_image_release_ibuf(image, ibuf, lock); @@ -646,7 +646,6 @@ static ImBuf *add_ibuf_size(unsigned int width, } STRNCPY(ibuf->name, name); - ibuf->userflags |= IB_BITMAPDIRTY; switch (gen_type) { case IMA_GENTYPE_GRID: @@ -5081,6 +5080,13 @@ bool BKE_image_has_packedfile(Image *ima) return (BLI_listbase_is_empty(&ima->packedfiles) == false); } +bool BKE_image_has_filepath(Image *ima) +{ + /* This could be improved to detect cases like //../../, currently path + * remapping empty file paths empty. */ + return ima->name[0] != '\0'; +} + /* Checks the image buffer changes with time (not keyframed values). */ bool BKE_image_is_animated(Image *image) { |