Revision: 49158
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49158
Author:   nazgul
Date:     2012-07-23 22:06:43 +0000 (Mon, 23 Jul 2012)
Log Message:
-----------
Tomato Cycles: code reshuffle to make data flow more obvious

Should be no functional changes

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 21:47:11 UTC (rev 49157)
+++ branches/soc-2011-tomato/intern/cycles/blender/blender_session.cpp  
2012-07-23 22:06:43 UTC (rev 49158)
@@ -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, bool 
final_sample)
+void BlenderSession::do_write_update_render_buffers(RenderBuffers *buffers, 
bool do_update, bool do_write)
 {
        BufferParams& params = buffers->params;
        int x = params.full_x - session->tile_manager.params.full_x;
@@ -210,16 +210,28 @@
        BL::RenderLayer b_rlay = *b_single_rlay;
 
        /* write result */
-       write_render_result(b_rr, b_rlay, buffers);
+       if (do_update)
+               write_render_result(b_rr, b_rlay, buffers);
 
-       if (final_sample)
+       if (do_write)
                end_render_result(b_engine, b_rr);
 }
 
+void BlenderSession::write_render_buffers(RenderBuffers *buffers)
+{
+       do_write_update_render_buffers(buffers, true, true);
+}
+
+void BlenderSession::update_render_buffers(RenderBuffers *buffers)
+{
+       do_write_update_render_buffers(buffers, true, false);
+}
+
 void BlenderSession::render()
 {
        /* set callback to write out render results */
-       session->write_render_buffers_cb = 
function_bind(&BlenderSession::write_render_buffers, this, _1, _2);
+       session->write_render_buffers_cb = 
function_bind(&BlenderSession::write_render_buffers, this, _1);
+       session->update_render_buffers_cb = 
function_bind(&BlenderSession::update_render_buffers, this, _1);
 
        /* get buffer parameters */
        SessionParams session_params = 
BlenderSync::get_session_params(b_engine, b_userpref, b_scene, background);
@@ -290,6 +302,7 @@
 
        /* clear callback */
        session->write_render_buffers_cb = NULL;
+       session->update_render_buffers_cb = NULL;
 }
 
 void BlenderSession::write_render_result(BL::RenderResult b_rr, 
BL::RenderLayer b_rlay, RenderBuffers *buffers)

Modified: branches/soc-2011-tomato/intern/cycles/blender/blender_session.h
===================================================================
--- branches/soc-2011-tomato/intern/cycles/blender/blender_session.h    
2012-07-23 21:47:11 UTC (rev 49157)
+++ branches/soc-2011-tomato/intern/cycles/blender/blender_session.h    
2012-07-23 22:06:43 UTC (rev 49158)
@@ -47,8 +47,10 @@
 
        /* offline render */
        void render();
+       void do_write_update_render_buffers(RenderBuffers *buffers, bool 
do_update, bool do_write);
        void write_render_result(BL::RenderResult b_rr, BL::RenderLayer b_rlay, 
RenderBuffers *buffers);
-       void write_render_buffers(RenderBuffers *buffers, bool final_sample);
+       void write_render_buffers(RenderBuffers *buffers);
+       void update_render_buffers(RenderBuffers *buffers);
 
        /* 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 
21:47:11 UTC (rev 49157)
+++ branches/soc-2011-tomato/intern/cycles/render/session.cpp   2012-07-23 
22:06:43 UTC (rev 49158)
@@ -377,11 +377,11 @@
 {
        thread_scoped_lock tile_lock(tile_mutex);
 
-       if(write_render_buffers_cb) {
+       if(update_render_buffers_cb) {
                /* todo: optimize this by making it thread safe and removing 
lock */
 
                if(!progress.get_cancel())
-                       write_render_buffers_cb(rtile.buffers, false);
+                       update_render_buffers_cb(rtile.buffers);
        }
 
        update_status_time();
@@ -394,7 +394,7 @@
        if(write_render_buffers_cb) {
                /* todo: optimize this by making it thread safe and removing 
lock */
                if(!progress.get_cancel())
-                       write_render_buffers_cb(rtile.buffers, true);
+                       write_render_buffers_cb(rtile.buffers);
                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 
21:47:11 UTC (rev 49157)
+++ branches/soc-2011-tomato/intern/cycles/render/session.h     2012-07-23 
22:06:43 UTC (rev 49158)
@@ -105,7 +105,8 @@
        TileManager tile_manager;
        int sample;
 
-       boost::function<void(RenderBuffers*, bool)> write_render_buffers_cb;
+       boost::function<void(RenderBuffers*)> write_render_buffers_cb;
+       boost::function<void(RenderBuffers*)> update_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