[Bf-blender-cvs] [967d659] multiview: From review: using image signal to handle needed updates after reload or image free

Dalai Felinto noreply at git.blender.org
Tue Nov 25 18:56:46 CET 2014


Commit: 967d65960daa1e5fb2efd3451afacc3aa25c6911
Author: Dalai Felinto
Date:   Mon Nov 24 17:09:29 2014 -0200
Branches: multiview
https://developer.blender.org/rB967d65960daa1e5fb2efd3451afacc3aa25c6911

>From review: using image signal to handle needed updates after reload or image free

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

M	source/blender/blenkernel/BKE_image.h
M	source/blender/blenkernel/intern/image.c
M	source/blender/editors/space_image/image_ops.c
M	source/blender/makesrna/intern/rna_image.c

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

diff --git a/source/blender/blenkernel/BKE_image.h b/source/blender/blenkernel/BKE_image.h
index 3233a2b..bd9563e 100644
--- a/source/blender/blenkernel/BKE_image.h
+++ b/source/blender/blenkernel/BKE_image.h
@@ -204,9 +204,6 @@ struct RenderPass *BKE_image_multilayer_index(struct RenderResult *rr, struct Im
 /* sets index offset for multiview files */
 void BKE_image_multiview_index(struct Image *ima, struct ImageUser *iuser);
 
-/* called on image settings change (in ui) */
-void BKE_image_update_views_format(struct Scene *scene, struct Image *ima);
-
 /* for multilayer images as well as for render-viewer */
 bool BKE_image_is_multilayer(struct Image *ima);
 struct RenderResult *BKE_image_acquire_renderresult(struct Scene *scene, struct Image *ima);
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 551ef25..2529272 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -102,6 +102,7 @@ static SpinLock image_spin;
 /* prototypes */
 static size_t image_num_files(struct Image *ima);
 static ImBuf *image_acquire_ibuf(Image *ima, ImageUser *iuser, void **lock_r);
+static void image_update_views_format(Scene *scene, Image *ima);
 
 /* max int, to indicate we don't store sequences in ibuf */
 #define IMA_NO_INDEX    0x7FEFEFEF
@@ -2516,8 +2517,13 @@ void BKE_image_signal(Image *ima, ImageUser *iuser, int signal)
 	switch (signal) {
 		case IMA_SIGNAL_FREE:
 			BKE_image_free_buffers(ima);
-			if (iuser)
+
+			if (iuser) {
 				iuser->ok = 1;
+				if (iuser->scene) {
+					image_update_views_format(iuser->scene, ima);
+				}
+			}
 			break;
 		case IMA_SIGNAL_SRC_CHANGE:
 			if (ima->type == IMA_TYPE_UV_TEST)
@@ -2598,8 +2604,12 @@ void BKE_image_signal(Image *ima, ImageUser *iuser, int signal)
 			else
 				BKE_image_free_buffers(ima);
 
-			if (iuser)
+			if (iuser) {
 				iuser->ok = 1;
+				if (iuser->scene) {
+					image_update_views_format(iuser->scene, ima);
+				}
+			}
 
 			break;
 		case IMA_SIGNAL_USER_NEW_IMAGE:
@@ -4405,7 +4415,7 @@ ImBuf *BKE_image_get_first_ibuf(Image *image)
 	return ibuf;
 }
 
-void BKE_image_update_views_format(Scene *scene, Image *ima)
+static void image_update_views_format(Scene *scene, Image *ima)
 {
 	SceneRenderView *srv;
 	ImageView *iv;
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c
index 1fce3ab..06fc2a3 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -1098,8 +1098,6 @@ static int image_open_exec(bContext *C, wmOperator *op)
 
 		ima->views_format = imf->views_format;
 		*ima->stereo3d_format = imf->stereo3d_format;
-
-		BKE_image_update_views_format(scene, ima);
 	}
 	else {
 		ima->flag &= IMA_IS_STEREO;
@@ -1153,6 +1151,7 @@ static int image_open_exec(bContext *C, wmOperator *op)
 		iuser->framenr = 1;
 		iuser->offset = frame_ofs - 1;
 		iuser->fie_ima = 2;
+		iuser->scene = scene;
 		BKE_image_init_imageuser(ima, iuser);
 	}
 
diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c
index 43bba64..4016a97 100644
--- a/source/blender/makesrna/intern/rna_image.c
+++ b/source/blender/makesrna/intern/rna_image.c
@@ -163,8 +163,9 @@ static void rna_Image_views_format_update(Main *UNUSED(bmain), Scene *scene, Poi
 	ibuf = BKE_image_acquire_ibuf(ima, NULL, &lock);
 
 	if (ibuf) {
-		BKE_image_update_views_format(scene, ima);
-		BKE_image_signal(ima, NULL, IMA_SIGNAL_FREE);
+		ImageUser iuser = {NULL};
+		iuser.scene = scene;
+		BKE_image_signal(ima, &iuser, IMA_SIGNAL_FREE);
 	}
 
 	BKE_image_release_ibuf(ima, ibuf, lock);




More information about the Bf-blender-cvs mailing list