Revision: 52437
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52437
Author:   nazgul
Date:     2012-11-21 11:10:37 +0000 (Wed, 21 Nov 2012)
Log Message:
-----------
Fix #33222: When rendering DPX it's flipped in the Image Editor

Avoid using IMB_flipy from image save callback. It will use a bit more
memory but wold be thread-safe.

Modified Paths:
--------------
    trunk/blender/source/blender/imbuf/intern/cineon/cineon_dpx.c

Modified: trunk/blender/source/blender/imbuf/intern/cineon/cineon_dpx.c
===================================================================
--- trunk/blender/source/blender/imbuf/intern/cineon/cineon_dpx.c       
2012-11-21 10:57:45 UTC (rev 52436)
+++ trunk/blender/source/blender/imbuf/intern/cineon/cineon_dpx.c       
2012-11-21 11:10:37 UTC (rev 52437)
@@ -139,9 +139,19 @@
        if (ibuf->rect_float != 0 && bitspersample != 8) {
                /* don't use the float buffer to save 8 bpp picture to prevent 
color banding
                   (there's no dithering algorithm behing the 
logImageSetDataRGBA function) */
-               IMB_flipy(ibuf);
-               rvalue = (logImageSetDataRGBA(logImage, ibuf->rect_float, 1) == 
0);
-               IMB_flipy(ibuf);
+
+               fbuf = (float *)MEM_mallocN(ibuf->x * ibuf->y * 4 * 
sizeof(float), "fbuf in imb_save_dpx_cineon");
+
+               for (y = 0; y < ibuf->y; y++) {
+                       float *dst_ptr = fbuf + 4 * ((ibuf->y - y - 1) * 
ibuf->x);
+                       float *src_ptr = ibuf->rect_float + 4 * (y * ibuf->x);
+
+                       memcpy(dst_ptr, src_ptr, 4 * ibuf->x * sizeof(float));
+               }
+
+               rvalue = (logImageSetDataRGBA(logImage, fbuf, 1) == 0);
+
+               MEM_freeN(fbuf);
        }
        else {
                if (ibuf->rect == 0)

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

Reply via email to