[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