[Bf-blender-cvs] [5f3c8cf] master: Fix T40476 - Baking multiple selected objects in Cycles final result depends on last selected object

Dalai Felinto noreply at git.blender.org
Tue Jun 3 07:15:12 CEST 2014


Commit: 5f3c8cf72d647ef97c275fc03dfc5dd6f3116513
Author: Dalai Felinto
Date:   Tue Jun 3 02:14:12 2014 -0300
https://developer.blender.org/rB5f3c8cf72d647ef97c275fc03dfc5dd6f3116513

Fix T40476 - Baking multiple selected objects in Cycles final result
depends on last selected object

Reviewers: campbellbarton

Differential Revision: https://developer.blender.org/D577

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

M	source/blender/editors/object/object_bake_api.c

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

diff --git a/source/blender/editors/object/object_bake_api.c b/source/blender/editors/object/object_bake_api.c
index 6c084e6..b2df61a 100644
--- a/source/blender/editors/object/object_bake_api.c
+++ b/source/blender/editors/object/object_bake_api.c
@@ -389,6 +389,11 @@ static bool bake_objects_check(Main *bmain, Object *ob, ListBase *objects,
 		}
 	}
 	else {
+		if (BLI_listbase_is_empty(objects)) {
+			BKE_report(reports, RPT_ERROR, "No valid selected objects");
+			return false;
+		}
+
 		for (link = objects->first; link; link = link->next) {
 			if (!bake_object_check(link->ptr.data, reports))
 				return false;
@@ -1010,6 +1015,8 @@ static void bake_init_api_data(wmOperator *op, bContext *C, BakeAPIRender *bkr)
 
 	bkr->reports = op->reports;
 
+	bkr->result = OPERATOR_CANCELLED;
+
 	/* XXX hack to force saving to always be internal. Whether (and how) to support
 	 * external saving will be addressed later */
 	bkr->save_mode = R_BAKE_SAVE_INTERNAL;
@@ -1017,7 +1024,7 @@ static void bake_init_api_data(wmOperator *op, bContext *C, BakeAPIRender *bkr)
 
 static int bake_exec(bContext *C, wmOperator *op)
 {
-	int result;
+	int result = OPERATOR_CANCELLED;
 	BakeAPIRender bkr = {NULL};
 
 	bake_init_api_data(op, C, &bkr);
@@ -1040,7 +1047,7 @@ static int bake_exec(bContext *C, wmOperator *op)
 	}
 	else {
 		CollectionPointerLink *link;
-		const bool is_clear = bkr.is_clear && (BLI_countlist(&bkr.selected_objects) == 1);
+		const bool is_clear = bkr.is_clear && BLI_listbase_is_single(&bkr.selected_objects);
 		for (link = bkr.selected_objects.first; link; link = link->next) {
 			Object *ob_iter = link->ptr.data;
 			result = bake(
@@ -1080,7 +1087,7 @@ static void bake_startjob(void *bkv, short *UNUSED(stop), short *UNUSED(do_updat
 	}
 	else {
 		CollectionPointerLink *link;
-		const bool is_clear = bkr->is_clear && (BLI_countlist(&bkr->selected_objects) == 1);
+		const bool is_clear = bkr->is_clear && BLI_listbase_is_single(&bkr->selected_objects);
 		for (link = bkr->selected_objects.first; link; link = link->next) {
 			Object *ob_iter = link->ptr.data;
 			bkr->result = bake(




More information about the Bf-blender-cvs mailing list