[Bf-blender-cvs] [f4d064a] master: Send color managed signal if input spaces changes during image saving

Sergey Sharybin noreply at git.blender.org
Wed May 20 12:34:56 CEST 2015


Commit: f4d064a5b2a245fd12bf2c60a70e6049ff088e7d
Author: Sergey Sharybin
Date:   Wed May 20 15:33:30 2015 +0500
Branches: master
https://developer.blender.org/rBf4d064a5b2a245fd12bf2c60a70e6049ff088e7d

Send color managed signal if input spaces changes during image saving

We're currently only supporting save to a default format color space, which
makes it a bit tricky to prevent ImBuf from being changed.

For until when saving to a custom colorspace works we'll just reload image
if the space changes.

===================================================================

M	source/blender/blenkernel/BKE_colortools.h
M	source/blender/blenkernel/intern/colortools.c
M	source/blender/editors/space_image/image_ops.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_colortools.h b/source/blender/blenkernel/BKE_colortools.h
index 9234625..74a327c 100644
--- a/source/blender/blenkernel/BKE_colortools.h
+++ b/source/blender/blenkernel/BKE_colortools.h
@@ -103,5 +103,6 @@ void BKE_color_managed_view_settings_free(struct ColorManagedViewSettings *setti
 void BKE_color_managed_colorspace_settings_init(struct ColorManagedColorspaceSettings *colorspace_settings);
 void BKE_color_managed_colorspace_settings_copy(struct ColorManagedColorspaceSettings *colorspace_settings,
                                                 const struct ColorManagedColorspaceSettings *settings);
-
+bool BKE_color_managed_colorspace_settings_equals(const struct ColorManagedColorspaceSettings *settings1,
+                                                  const struct ColorManagedColorspaceSettings *settings2);
 #endif
diff --git a/source/blender/blenkernel/intern/colortools.c b/source/blender/blenkernel/intern/colortools.c
index 616e8a0..c5f7e12 100644
--- a/source/blender/blenkernel/intern/colortools.c
+++ b/source/blender/blenkernel/intern/colortools.c
@@ -1303,3 +1303,9 @@ void BKE_color_managed_colorspace_settings_copy(ColorManagedColorspaceSettings *
 {
 	BLI_strncpy(colorspace_settings->name, settings->name, sizeof(colorspace_settings->name));
 }
+
+bool BKE_color_managed_colorspace_settings_equals(const ColorManagedColorspaceSettings *settings1,
+                                                  const ColorManagedColorspaceSettings *settings2)
+{
+	return STREQ(settings1->name, settings2->name);
+}
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c
index ddb1cec..d9f89bf 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -1537,6 +1537,8 @@ static void save_image_post(wmOperator *op, ImBuf *ibuf, Image *ima, int ok, int
 {
 	if (ok) {
 		if (!save_copy) {
+			ColorManagedColorspaceSettings old_colorspace_settings;
+
 			if (do_newpath) {
 				BLI_strncpy(ibuf->name, filepath, sizeof(ibuf->name));
 				BLI_strncpy(ima->name, filepath, sizeof(ima->name));
@@ -1570,8 +1572,14 @@ static void save_image_post(wmOperator *op, ImBuf *ibuf, Image *ima, int ok, int
 				BLI_path_rel(ima->name, relbase); /* only after saving */
 			}
 
+			BKE_color_managed_colorspace_settings_copy(&old_colorspace_settings,
+			                                           &ima->colorspace_settings);
 			IMB_colormanagment_colorspace_from_ibuf_ftype(&ima->colorspace_settings, ibuf);
-
+			if (!BKE_color_managed_colorspace_settings_equals(&old_colorspace_settings,
+			                                                  &ima->colorspace_settings))
+			{
+				BKE_image_signal(ima, NULL, IMA_SIGNAL_COLORMANAGE);
+			}
 		}
 	}
 	else {




More information about the Bf-blender-cvs mailing list