[Bf-blender-cvs] [0a33aa3] bake-cycles: Cycles-Bake: [review] pass progress to baking, though I still cant cancel it

Dalai Felinto noreply at git.blender.org
Wed Apr 23 02:47:55 CEST 2014


Commit: 0a33aa3ed4c81fd0dda44f235592900f5b50ab3a
Author: Dalai Felinto
Date:   Tue Apr 1 19:39:54 2014 -0300
https://developer.blender.org/rB0a33aa3ed4c81fd0dda44f235592900f5b50ab3a

Cycles-Bake: [review] pass progress to baking, though I still cant cancel it

===================================================================

M	intern/cycles/blender/blender_session.cpp
M	intern/cycles/render/bake.cpp
M	intern/cycles/render/bake.h

===================================================================

diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 14b0c38..8d0e618 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -561,7 +561,7 @@ void BlenderSession::bake(BL::Object b_object, const string& pass_type, BL::Bake
 
 	populate_bake_data(bake_data, pixel_array, num_pixels);
 
-	scene->bake_manager->bake(scene->device, &scene->dscene, scene, shader_type, bake_data, result);
+	scene->bake_manager->bake(scene->device, &scene->dscene, scene, session->progress, shader_type, bake_data, result);
 
 	/* free all memory used (host and device), so we wouldn't leave render
 	 * engine with extra memory allocated
diff --git a/intern/cycles/render/bake.cpp b/intern/cycles/render/bake.cpp
index 3693753..0aff4a0 100644
--- a/intern/cycles/render/bake.cpp
+++ b/intern/cycles/render/bake.cpp
@@ -78,7 +78,7 @@ BakeData *BakeManager::init(const int object, const int tri_offset, const int nu
 	return bake_data;
 }
 
-bool BakeManager::bake(Device *device, DeviceScene *dscene, Scene *scene, ShaderEvalType shader_type, BakeData *bake_data, float result[])
+bool BakeManager::bake(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress, ShaderEvalType shader_type, BakeData *bake_data, float result[])
 {
 	size_t limit = bake_data->size();
 
@@ -115,13 +115,16 @@ bool BakeManager::bake(Device *device, DeviceScene *dscene, Scene *scene, Shader
 	device->task_add(task);
 	device->task_wait();
 
+	if(progress.get_cancel()) {
+		device->mem_free(d_input);
+		device->mem_free(d_output);
+		return false;
+	}
+
 	device->mem_copy_from(d_output, 0, 1, d_output.size(), sizeof(float4));
 	device->mem_free(d_input);
 	device->mem_free(d_output);
 
-//	if(progress.get_cancel())
-//		return false;
-
 	/* read result */
 	int k = 0;
 
diff --git a/intern/cycles/render/bake.h b/intern/cycles/render/bake.h
index d197392..24a3443 100644
--- a/intern/cycles/render/bake.h
+++ b/intern/cycles/render/bake.h
@@ -53,7 +53,7 @@ public:
 
 	BakeData *init(const int object, const int tri_offset, const int num_pixels);
 
-	bool bake(Device *device, DeviceScene *dscene, Scene *scene, ShaderEvalType shader_type, BakeData *bake_data, float result[]);
+	bool bake(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress, ShaderEvalType shader_type, BakeData *bake_data, float result[]);
 
 	void device_update(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress);
 	void device_free(Device *device, DeviceScene *dscene);




More information about the Bf-blender-cvs mailing list