Commit: a16fef8e61205b0c820d7bb0dfb72cdd071f0aa4
Author: Dalai Felinto
Date:   Wed Sep 3 16:11:45 2014 +0200
Branches: multiview
https://developer.blender.org/rBa16fef8e61205b0c820d7bb0dfb72cdd071f0aa4

Move code to reset Viewer Image cache to BKE_image.h

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

M       source/blender/blenkernel/BKE_image.h
M       source/blender/blenkernel/intern/image.c
M       source/blender/compositor/nodes/COM_SplitViewerNode.cpp
M       source/blender/compositor/nodes/COM_ViewerNode.cpp

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

diff --git a/source/blender/blenkernel/BKE_image.h 
b/source/blender/blenkernel/BKE_image.h
index c83d1f3..c0221a5 100644
--- a/source/blender/blenkernel/BKE_image.h
+++ b/source/blender/blenkernel/BKE_image.h
@@ -101,6 +101,7 @@ void    free_old_images(void);
 /* ImageUser is in Texture, in Nodes, Background Image, Image Window, .... */
 /* should be used in conjunction with an ID * to Image. */
 struct ImageUser;
+struct RenderData;
 struct RenderPass;
 struct RenderResult;
 
@@ -182,6 +183,8 @@ void BKE_image_walk_all_users(const struct Main *mainp, 
void *customdata,
 
 /* ensures an Image exists for viewing nodes or render */
 struct Image *BKE_image_verify_viewer(int type, const char *name);
+/* reset viewer nodes cache when the number of cache doesn't match the needed 
cached views */
+void BKE_image_verify_viewer_cache(const struct RenderData *rd, struct Image 
*ima, struct ImageUser *iuser);
 
 /* force an ImBuf to become part of Image */
 void BKE_image_assign_ibuf(struct Image *ima, struct ImBuf *ibuf);
diff --git a/source/blender/blenkernel/intern/image.c 
b/source/blender/blenkernel/intern/image.c
index d85d08f..7b591b0 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -2170,6 +2170,32 @@ Image *BKE_image_verify_viewer(int type, const char 
*name)
        return ima;
 }
 
+/* Reset the rederout or nodes image cache when the number of cache
+ * doesn't match the needed cached views */
+void BKE_image_verify_viewer_cache(const RenderData *rd, Image *ima, ImageUser 
*iuser)
+{
+       size_t num_views, num_caches;
+
+       BLI_lock_thread(LOCK_DRAW_IMAGE);
+
+       if (BKE_scene_is_stereo3d(rd)) {
+               ima->flag |= IMA_IS_STEREO;
+       }
+       else {
+               ima->flag &= ~IMA_IS_STEREO;
+               iuser->flag &= ~IMA_SHOW_STEREO;
+       }
+
+       num_views = BKE_scene_num_views(rd);
+       num_caches = BKE_image_cache_count(ima);
+
+       if (num_views != num_caches) {
+               BKE_image_free_cached_frames(ima);
+       }
+
+       BLI_unlock_thread(LOCK_DRAW_IMAGE);
+}
+
 void BKE_image_assign_ibuf(Image *ima, ImBuf *ibuf)
 {
        image_assign_ibuf(ima, ibuf, IMA_NO_INDEX, 0);
diff --git a/source/blender/compositor/nodes/COM_SplitViewerNode.cpp 
b/source/blender/compositor/nodes/COM_SplitViewerNode.cpp
index 447d469..b176dd0 100644
--- a/source/blender/compositor/nodes/COM_SplitViewerNode.cpp
+++ b/source/blender/compositor/nodes/COM_SplitViewerNode.cpp
@@ -75,22 +75,6 @@ void SplitViewerNode::convertToOperations(NodeConverter 
&converter, const Compos
                converter.registerViewer(viewerOperation);
 
        if (image && BKE_scene_render_view_first(context.getRenderData(), 
context.getViewName())) {
-               BLI_lock_thread(LOCK_DRAW_IMAGE);
-               if (BKE_scene_is_stereo3d(context.getRenderData())) {
-                       image->flag |= IMA_IS_STEREO;
-               }
-               else {
-                       image->flag &= ~IMA_IS_STEREO;
-                       imageUser->flag &= ~IMA_SHOW_STEREO;
-               }
-
-               size_t num_views = BKE_scene_num_views(context.getRenderData());
-               size_t num_caches = BKE_image_cache_count(image);
-
-               if (num_views != num_caches) {
-                       BKE_image_free_cached_frames(image);
-               }
-
-               BLI_unlock_thread(LOCK_DRAW_IMAGE);
+               BKE_image_verify_viewer_cache(context.getRenderData(), image, 
imageUser);
        }
 }
diff --git a/source/blender/compositor/nodes/COM_ViewerNode.cpp 
b/source/blender/compositor/nodes/COM_ViewerNode.cpp
index 4662e47..7743701 100644
--- a/source/blender/compositor/nodes/COM_ViewerNode.cpp
+++ b/source/blender/compositor/nodes/COM_ViewerNode.cpp
@@ -82,22 +82,6 @@ void ViewerNode::convertToOperations(NodeConverter 
&converter, const CompositorC
                converter.registerViewer(viewerOperation);
 
        if (image && BKE_scene_render_view_first(context.getRenderData(), 
context.getViewName())) {
-               BLI_lock_thread(LOCK_DRAW_IMAGE);
-               if (BKE_scene_is_stereo3d(context.getRenderData())) {
-                       image->flag |= IMA_IS_STEREO;
-               }
-               else {
-                       image->flag &= ~IMA_IS_STEREO;
-                       imageUser->flag &= ~IMA_SHOW_STEREO;
-               }
-
-               size_t num_views = BKE_scene_num_views(context.getRenderData());
-               size_t num_caches = BKE_image_cache_count(image);
-
-               if (num_views != num_caches) {
-                       BKE_image_free_cached_frames(image);
-               }
-
-               BLI_unlock_thread(LOCK_DRAW_IMAGE);
+               BKE_image_verify_viewer_cache(context.getRenderData(), image, 
imageUser);
        }
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to