Revision: 47657
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47657
Author:   lukastoenne
Date:     2012-06-10 07:35:45 +0000 (Sun, 10 Jun 2012)
Log Message:
-----------
Fix #31747, broken image sequence loading after r47432.

The image file name function was updating the iuser->framenr using a supposed 
cfra parameter. However, the actual cfra is unknown when loading movies or 
sequences, so the iuser->framenr value itself was passed in its place, leading 
to incremental addition of the iuser frame offset. Removed the cfra parameter 
altogether from the image path function. This should instead be done separately 
if necessary, it's not an inherent part of constructing the image file name.

Revision Links:
--------------
    
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47432

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/blender_util.h
    trunk/blender/source/blender/blenkernel/BKE_image.h
    trunk/blender/source/blender/blenkernel/intern/image.c

Modified: trunk/blender/intern/cycles/blender/blender_util.h
===================================================================
--- trunk/blender/intern/cycles/blender/blender_util.h  2012-06-10 00:22:18 UTC 
(rev 47656)
+++ trunk/blender/intern/cycles/blender/blender_util.h  2012-06-10 07:35:45 UTC 
(rev 47657)
@@ -53,7 +53,8 @@
 void BLI_timestr(double _time, char *str);
 void rna_ColorRamp_eval(void *coba, float position, float color[4]);
 void rna_Scene_frame_set(void *scene, int frame, float subframe);
-void BKE_image_user_file_path(void *iuser, void *ima, int cfra, char *path);
+void BKE_image_user_frame_calc(void *iuser, int cfra, int fieldnr);
+void BKE_image_user_file_path(void *iuser, void *ima, char *path);
 
 }
 
@@ -105,7 +106,8 @@
 static inline string image_user_file_path(BL::ImageUser iuser, BL::Image ima, 
int cfra)
 {
        char filepath[1024];
-       BKE_image_user_file_path(iuser.ptr.data, ima.ptr.data, cfra, filepath);
+       BKE_image_user_frame_calc(iuser.ptr.data, cfra, 0);
+       BKE_image_user_file_path(iuser.ptr.data, ima.ptr.data, filepath);
        return string(filepath);
 }
 

Modified: trunk/blender/source/blender/blenkernel/BKE_image.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_image.h 2012-06-10 00:22:18 UTC 
(rev 47656)
+++ trunk/blender/source/blender/blenkernel/BKE_image.h 2012-06-10 07:35:45 UTC 
(rev 47657)
@@ -157,7 +157,7 @@
 void BKE_image_user_frame_calc(struct ImageUser *iuser, int cfra, int fieldnr);
 void BKE_image_user_check_frame_calc(struct ImageUser *iuser, int cfra, int 
fieldnr);
 int  BKE_image_user_frame_get(const struct ImageUser *iuser, int cfra, int 
fieldnr);
-void BKE_image_user_file_path(struct ImageUser *iuser, struct Image *ima, int 
cfra, char *path); 
+void BKE_image_user_file_path(struct ImageUser *iuser, struct Image *ima, char 
*path); 
 
 /* sets index offset for multilayer files */
 struct RenderPass *BKE_image_multilayer_index(struct RenderResult *rr, struct 
ImageUser *iuser);

Modified: trunk/blender/source/blender/blenkernel/intern/image.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/image.c      2012-06-10 
00:22:18 UTC (rev 47656)
+++ trunk/blender/source/blender/blenkernel/intern/image.c      2012-06-10 
07:35:45 UTC (rev 47657)
@@ -2092,7 +2092,7 @@
                ima->tpageflag |= IMA_TPAGE_REFRESH;
 
        ima->lastframe = frame;
-       BKE_image_user_file_path(iuser, ima, frame, name);
+       BKE_image_user_file_path(iuser, ima, name);
        
        flag = IB_rect | IB_multilayer;
        if (ima->flag & IMA_DO_PREMUL)
@@ -2204,7 +2204,7 @@
        if (ima->anim == NULL) {
                char str[FILE_MAX];
                
-               BKE_image_user_file_path(iuser, ima, frame, str);
+               BKE_image_user_file_path(iuser, ima, str);
 
                /* FIXME: make several stream accessible in image editor, too*/
                ima->anim = openanim(str, IB_rect, 0);
@@ -2267,7 +2267,8 @@
                        flag |= IB_premul;
                        
                /* get the right string */
-               BKE_image_user_file_path(iuser, ima, cfra, str);
+               BKE_image_user_frame_calc(iuser, cfra, 0);
+               BKE_image_user_file_path(iuser, ima, str);
                
                /* read ibuf */
                ibuf = IMB_loadiffname(str, flag);
@@ -2741,22 +2742,15 @@
        }
 }
 
-void BKE_image_user_file_path(ImageUser *iuser, Image *ima, int cfra, char 
*filepath)
+void BKE_image_user_file_path(ImageUser *iuser, Image *ima, char *filepath)
 {
        BLI_strncpy(filepath, ima->name, FILE_MAX);
 
        if (ima->source == IMA_SRC_SEQUENCE) {
                char head[FILE_MAX], tail[FILE_MAX];
                unsigned short numlen;
-               int frame;
+               int frame = iuser->framenr;
 
-               if(iuser) {
-                       BKE_image_user_frame_calc(iuser, cfra, 0);
-                       frame = iuser->framenr;
-               }
-               else {
-               }
-
                BLI_stringdec(filepath, head, tail, &numlen);
                BLI_stringenc(filepath, head, tail, numlen, frame);
        }

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

Reply via email to