Revision: 49155
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49155
Author:   nazgul
Date:     2012-07-23 20:46:27 +0000 (Mon, 23 Jul 2012)
Log Message:
-----------
Tomato Cycles: deadlock with save buffers enabled should be resolved now

Modified Paths:
--------------
    branches/soc-2011-tomato/intern/cycles/blender/blender_session.cpp
    branches/soc-2011-tomato/intern/cycles/blender/blender_session.h
    branches/soc-2011-tomato/intern/cycles/render/session.cpp
    branches/soc-2011-tomato/intern/cycles/render/session.h

Modified: branches/soc-2011-tomato/intern/cycles/blender/blender_session.cpp
===================================================================
--- branches/soc-2011-tomato/intern/cycles/blender/blender_session.cpp  
2012-07-23 20:24:35 UTC (rev 49154)
+++ branches/soc-2011-tomato/intern/cycles/blender/blender_session.cpp  
2012-07-23 20:46:27 UTC (rev 49155)
@@ -189,7 +189,7 @@
        RE_engine_end_result((RenderEngine*)b_engine.ptr.data, 
(RenderResult*)b_rr.ptr.data, (int)cancel);
 }
 
-void BlenderSession::write_render_buffers(RenderBuffers *buffers)
+void BlenderSession::write_render_buffers(RenderBuffers *buffers, bool 
final_sample)
 {
        BufferParams& params = buffers->params;
        int x = params.full_x - session->tile_manager.params.full_x;
@@ -211,13 +211,15 @@
 
        /* write result */
        write_render_result(b_rr, b_rlay, buffers);
-       end_render_result(b_engine, b_rr);
+
+       if (final_sample)
+               end_render_result(b_engine, b_rr);
 }
 
 void BlenderSession::render()
 {
        /* set callback to write out render results */
-       session->write_render_buffers_cb = 
function_bind(&BlenderSession::write_render_buffers, this, _1);
+       session->write_render_buffers_cb = 
function_bind(&BlenderSession::write_render_buffers, this, _1, _2);
 
        /* get buffer parameters */
        SessionParams session_params = 
BlenderSync::get_session_params(b_engine, b_userpref, b_scene, background);

Modified: branches/soc-2011-tomato/intern/cycles/blender/blender_session.h
===================================================================
--- branches/soc-2011-tomato/intern/cycles/blender/blender_session.h    
2012-07-23 20:24:35 UTC (rev 49154)
+++ branches/soc-2011-tomato/intern/cycles/blender/blender_session.h    
2012-07-23 20:46:27 UTC (rev 49155)
@@ -48,7 +48,7 @@
        /* offline render */
        void render();
        void write_render_result(BL::RenderResult b_rr, BL::RenderLayer b_rlay, 
RenderBuffers *buffers);
-       void write_render_buffers(RenderBuffers *buffers);
+       void write_render_buffers(RenderBuffers *buffers, bool final_sample);
 
        /* interactive updates */
        void synchronize();

Modified: branches/soc-2011-tomato/intern/cycles/render/session.cpp
===================================================================
--- branches/soc-2011-tomato/intern/cycles/render/session.cpp   2012-07-23 
20:24:35 UTC (rev 49154)
+++ branches/soc-2011-tomato/intern/cycles/render/session.cpp   2012-07-23 
20:46:27 UTC (rev 49155)
@@ -381,7 +381,7 @@
                /* todo: optimize this by making it thread safe and removing 
lock */
 
                if(!progress.get_cancel())
-                       write_render_buffers_cb(rtile.buffers);
+                       write_render_buffers_cb(rtile.buffers, false);
        }
 
        update_status_time();
@@ -393,9 +393,8 @@
 
        if(write_render_buffers_cb) {
                /* todo: optimize this by making it thread safe and removing 
lock */
-               /* todo: this could be removed as soon as all devices would use 
update_tile_sample */
                if(!progress.get_cancel())
-                       write_render_buffers_cb(rtile.buffers);
+                       write_render_buffers_cb(rtile.buffers, true);
                delete rtile.buffers;
        }
 

Modified: branches/soc-2011-tomato/intern/cycles/render/session.h
===================================================================
--- branches/soc-2011-tomato/intern/cycles/render/session.h     2012-07-23 
20:24:35 UTC (rev 49154)
+++ branches/soc-2011-tomato/intern/cycles/render/session.h     2012-07-23 
20:46:27 UTC (rev 49155)
@@ -105,7 +105,7 @@
        TileManager tile_manager;
        int sample;
 
-       boost::function<void(RenderBuffers*)> write_render_buffers_cb;
+       boost::function<void(RenderBuffers*, bool)> write_render_buffers_cb;
 
        Session(const SessionParams& params);
        ~Session();

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

Reply via email to