Revision: 50181
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50181
Author:   nazgul
Date:     2012-08-24 13:12:18 +0000 (Fri, 24 Aug 2012)
Log Message:
-----------
Color management: fix for clone brush

It was using ibuf->rect for drawing alpha over, now it's using actual
display buffer.

Modified Paths:
--------------
    branches/soc-2011-tomato/source/blender/editors/space_image/image_draw.c
    branches/soc-2011-tomato/source/blender/imbuf/intern/colormanagement.c

Modified: 
branches/soc-2011-tomato/source/blender/editors/space_image/image_draw.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_image/image_draw.c    
2012-08-24 12:50:54 UTC (rev 50180)
+++ branches/soc-2011-tomato/source/blender/editors/space_image/image_draw.c    
2012-08-24 13:12:18 UTC (rev 50181)
@@ -651,22 +651,35 @@
 }
 #endif
 
-static unsigned char *get_alpha_clone_image(Scene *scene, int *width, int 
*height)
+static unsigned char *get_alpha_clone_image(const bContext *C, Scene *scene, 
int *width, int *height)
 {
        Brush *brush = paint_brush(&scene->toolsettings->imapaint.paint);
        ImBuf *ibuf;
        unsigned int size, alpha;
+       unsigned char *display_buffer;
        unsigned char *rect, *cp;
+       void *cache_handle;
 
        if (!brush || !brush->clone.image)
                return NULL;
        
        ibuf = BKE_image_get_ibuf(brush->clone.image, NULL);
 
-       if (!ibuf || !ibuf->rect)
+       if (!ibuf)
                return NULL;
 
-       rect = MEM_dupallocN(ibuf->rect);
+       display_buffer = IMB_display_buffer_acquire_ctx(C, ibuf, &cache_handle);
+
+       if (!display_buffer) {
+               IMB_display_buffer_release(cache_handle);
+
+               return NULL;
+       }
+
+       rect = MEM_dupallocN(display_buffer);
+
+       IMB_display_buffer_release(cache_handle);
+
        if (!rect)
                return NULL;
 
@@ -685,7 +698,7 @@
        return rect;
 }
 
-static void draw_image_paint_helpers(ARegion *ar, Scene *scene, float zoomx, 
float zoomy)
+static void draw_image_paint_helpers(const bContext *C, ARegion *ar, Scene 
*scene, float zoomx, float zoomy)
 {
        Brush *brush;
        int x, y, w, h;
@@ -696,7 +709,7 @@
        if (brush && (brush->imagepaint_tool == PAINT_TOOL_CLONE)) {
                /* this is not very efficient, but glDrawPixels doesn't allow
                 * drawing with alpha */
-               clonerect = get_alpha_clone_image(scene, &w, &h);
+               clonerect = get_alpha_clone_image(C, scene, &w, &h);
 
                if (clonerect) {
                        UI_view2d_to_region_no_clip(&ar->v2d, 
brush->clone.offset[0], brush->clone.offset[1], &x, &y);
@@ -777,7 +790,7 @@
 
        /* paint helpers */
        if (sima->mode == SI_MODE_PAINT)
-               draw_image_paint_helpers(ar, scene, zoomx, zoomy);
+               draw_image_paint_helpers(C, ar, scene, zoomx, zoomy);
 
 
        /* XXX integrate this code */

Modified: branches/soc-2011-tomato/source/blender/imbuf/intern/colormanagement.c
===================================================================
--- branches/soc-2011-tomato/source/blender/imbuf/intern/colormanagement.c      
2012-08-24 12:50:54 UTC (rev 50180)
+++ branches/soc-2011-tomato/source/blender/imbuf/intern/colormanagement.c      
2012-08-24 13:12:18 UTC (rev 50181)
@@ -1950,7 +1950,7 @@
                        if (view_flags % 2 == 1) {
                                ColormanageCacheViewSettings view_settings = 
{0};
                                unsigned char *display_buffer;
-                               void *cache_handle;
+                               void *cache_handle = NULL;
                                int view_index = view + 1; /* views in 
configuration are 1-based */
                                float exposure, gamma;
                                int buffer_width;

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

Reply via email to