[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49155] branches/soc-2011-tomato/intern/ cycles: Tomato Cycles: deadlock with save buffers enabled should be resolved now
Sergey Sharybin
sergey.vfx at gmail.com
Mon Jul 23 22:46:28 CEST 2012
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();
More information about the Bf-blender-cvs
mailing list