Revision: 51310
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51310
Author:   nazgul
Date:     2012-10-14 06:59:01 +0000 (Sun, 14 Oct 2012)
Log Message:
-----------
Fixed missing display buffer and mipmaps invalidation in cases only
few of selected objects failed to bake.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/object/object_bake.c
    trunk/blender/source/blender/imbuf/intern/colormanagement.c
    trunk/blender/source/blender/render/intern/source/rendercore.c

Modified: trunk/blender/source/blender/editors/object/object_bake.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_bake.c   2012-10-14 
04:50:43 UTC (rev 51309)
+++ trunk/blender/source/blender/editors/object/object_bake.c   2012-10-14 
06:59:01 UTC (rev 51310)
@@ -900,7 +900,7 @@
 
                RE_bake_ibuf_filter(ibuf, (char *)ibuf->userdata, 
bkr->bake_filter);
 
-               ibuf->userflags |= IB_BITMAPDIRTY | IB_DISPLAY_BUFFER_INVALID;;
+               ibuf->userflags |= IB_BITMAPDIRTY | IB_DISPLAY_BUFFER_INVALID;
 
                if (ibuf->rect_float)
                        ibuf->userflags |= IB_RECT_INVALID;
@@ -1366,20 +1366,23 @@
                if (bkr->prev_r_raytrace == 0)
                        bkr->scene->r.mode &= ~R_RAYTRACE;
 
-
        /* force OpenGL reload and mipmap recalc */
        for (ima = G.main->image.first; ima; ima = ima->id.next) {
                ImBuf *ibuf = BKE_image_get_ibuf(ima, NULL);
 
-               if (bkr->result == BAKE_RESULT_OK) {
-                       if (ima->ok == IMA_OK_LOADED) {
-                               if (ibuf) {
-                                       if (ibuf->userflags & IB_BITMAPDIRTY) {
-                                               ibuf->userflags |= 
IB_DISPLAY_BUFFER_INVALID;
-                                               GPU_free_image(ima);
-                                               imb_freemipmapImBuf(ibuf);
-                                       }
+               /* some of the images could have been changed during bake,
+                * so recreate mipmaps regardless bake result status
+                */
+               if (ima->ok == IMA_OK_LOADED) {
+                       if (ibuf) {
+                               if (ibuf->userflags & IB_BITMAPDIRTY) {
+                                       GPU_free_image(ima);
+                                       imb_freemipmapImBuf(ibuf);
                                }
+
+                               /* invalidate display buffers for changed 
images */
+                               if (ibuf->userflags & IB_BITMAPDIRTY)
+                                       ibuf->userflags |= 
IB_DISPLAY_BUFFER_INVALID;
                        }
                }
 

Modified: trunk/blender/source/blender/imbuf/intern/colormanagement.c
===================================================================
--- trunk/blender/source/blender/imbuf/intern/colormanagement.c 2012-10-14 
04:50:43 UTC (rev 51309)
+++ trunk/blender/source/blender/imbuf/intern/colormanagement.c 2012-10-14 
06:59:01 UTC (rev 51310)
@@ -1822,7 +1822,7 @@
                        if (global_tot_display)
                                ibuf->display_buffer_flags = 
MEM_callocN(sizeof(unsigned int) * global_tot_display, "imbuf 
display_buffer_flags");
                }
-                else if (ibuf->userflags & IB_DISPLAY_BUFFER_INVALID) {
+               else if (ibuf->userflags & IB_DISPLAY_BUFFER_INVALID) {
                        /* all display buffers were marked as invalid from 
other areas,
                         * now propagate this flag to internal color management 
routines
                         */

Modified: trunk/blender/source/blender/render/intern/source/rendercore.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/rendercore.c      
2012-10-14 04:50:43 UTC (rev 51309)
+++ trunk/blender/source/blender/render/intern/source/rendercore.c      
2012-10-14 06:59:01 UTC (rev 51310)
@@ -2513,7 +2513,9 @@
                                                /* clear image */
                                                if (R.r.bake_flag & 
R_BAKE_CLEAR)
                                                        IMB_rectfill(ibuf, 
(ibuf->planes == R_IMF_PLANES_RGBA) ? vec_alpha : vec_solid);
-                                       
+
+                                               ibuf->userflags |= 
IB_DISPLAY_BUFFER_INVALID;
+
                                                /* might be read by UI to set 
active image for display */
                                                R.bakebuf= ima;
                                        }                               
@@ -2733,7 +2735,6 @@
                        RE_bake_ibuf_filter(ibuf, (char *)ibuf->userdata, 
re->r.bake_filter);
 
                        ibuf->userflags |= IB_BITMAPDIRTY;
-                       if (ibuf->rect_float) IMB_rect_from_float(ibuf);
                }
        }
        

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

Reply via email to