[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54491] trunk/blender/intern/cycles/render /session.cpp: Fix #34205: Cycles: Zooming in rendered mode during update out of sync with intended zoom
Sergey Sharybin
sergey.vfx at gmail.com
Tue Feb 12 14:06:53 CET 2013
Revision: 54491
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54491
Author: nazgul
Date: 2013-02-12 13:06:52 +0000 (Tue, 12 Feb 2013)
Log Message:
-----------
Fix #34205: Cycles: Zooming in rendered mode during update out of sync with intended zoom
Made sure no pause_cond.wait() happens at the same time as session as resetting.
Modified Paths:
--------------
trunk/blender/intern/cycles/render/session.cpp
Modified: trunk/blender/intern/cycles/render/session.cpp
===================================================================
--- trunk/blender/intern/cycles/render/session.cpp 2013-02-12 11:45:16 UTC (rev 54490)
+++ trunk/blender/intern/cycles/render/session.cpp 2013-02-12 13:06:52 UTC (rev 54491)
@@ -132,6 +132,8 @@
void Session::reset_gpu(BufferParams& buffer_params, int samples)
{
+ thread_scoped_lock pause_lock(pause_mutex);
+
/* block for buffer acces and reset immediately. we can't do this
* in the thread, because we need to allocate an OpenGL buffer, and
* that only works in the main thread */
@@ -295,6 +297,7 @@
void Session::reset_cpu(BufferParams& buffer_params, int samples)
{
thread_scoped_lock reset_lock(delayed_reset.mutex);
+ thread_scoped_lock pause_lock(pause_mutex);
display_outdated = true;
reset_time = time_dt();
@@ -484,7 +487,16 @@
* wait for pause condition notify to wake up again */
thread_scoped_lock pause_lock(pause_mutex);
- if(pause || no_tiles) {
+ if(!pause && delayed_reset.do_reset) {
+ /* reset once to start */
+ thread_scoped_lock reset_lock(delayed_reset.mutex);
+ thread_scoped_lock buffers_lock(buffers_mutex);
+ thread_scoped_lock display_lock(display_mutex);
+
+ reset_(delayed_reset.params, delayed_reset.samples);
+ delayed_reset.do_reset = false;
+ }
+ else if(pause || no_tiles) {
update_status_time(pause, no_tiles);
while(1) {
More information about the Bf-blender-cvs
mailing list