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:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-06-19 15:28:54 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-06-19 16:04:05 +0300
commit11c9702dd40f1461ee2d2c1136909a867d4f06f9 (patch)
treedf2e3aa6f1e63539978df9961a0bb991df172879 /source/blender/blenkernel/intern/image.c
parent54e6b262a14b23160fdecfec68f3e22dcf70bb3e (diff)
Fix T65902: save all modified images should not try to save .psd files
We can't save these without data loss, so don't try to do this.
Diffstat (limited to 'source/blender/blenkernel/intern/image.c')
-rw-r--r--source/blender/blenkernel/intern/image.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index f3ef48cafa8..b90cd9f15f8 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -5075,9 +5075,10 @@ bool BKE_image_is_animated(Image *image)
}
/* Image modifications */
-bool BKE_image_is_dirty(Image *image)
+bool BKE_image_is_dirty_writable(Image *image, bool *r_is_writable)
{
bool is_dirty = false;
+ bool is_writable = false;
BLI_spin_lock(&image_spin);
if (image->cache != NULL) {
@@ -5086,6 +5087,7 @@ bool BKE_image_is_dirty(Image *image)
while (!IMB_moviecacheIter_done(iter)) {
ImBuf *ibuf = IMB_moviecacheIter_getImBuf(iter);
if (ibuf->userflags & IB_BITMAPDIRTY) {
+ is_writable = BKE_image_buffer_format_writable(ibuf);
is_dirty = true;
break;
}
@@ -5095,14 +5097,31 @@ bool BKE_image_is_dirty(Image *image)
}
BLI_spin_unlock(&image_spin);
+ if (r_is_writable) {
+ *r_is_writable = is_writable;
+ }
+
return is_dirty;
}
+bool BKE_image_is_dirty(Image *image)
+{
+ return BKE_image_is_dirty_writable(image, NULL);
+}
+
void BKE_image_mark_dirty(Image *UNUSED(image), ImBuf *ibuf)
{
ibuf->userflags |= IB_BITMAPDIRTY;
}
+bool BKE_image_buffer_format_writable(ImBuf *ibuf)
+{
+ ImageFormatData im_format;
+ ImbFormatOptions options_dummy;
+ BKE_imbuf_to_image_format(&im_format, ibuf);
+ return (BKE_image_imtype_to_ftype(im_format.imtype, &options_dummy) == ibuf->ftype);
+}
+
void BKE_image_file_format_set(Image *image, int ftype, const ImbFormatOptions *options)
{
BLI_spin_lock(&image_spin);