Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2014-06-03 09:14:12 +0400
committerDalai Felinto <dfelinto@gmail.com>2014-06-03 09:14:12 +0400
commit5f3c8cf72d647ef97c275fc03dfc5dd6f3116513 (patch)
treec12543ab6126815109ff5389f686592029e9ca8d
parentb7eff584b0b6d692aabd88192b9e23b6a1a417b6 (diff)
Fix T40476 - Baking multiple selected objects in Cycles final result
depends on last selected object Reviewers: campbellbarton Differential Revision: https://developer.blender.org/D577
-rw-r--r--source/blender/editors/object/object_bake_api.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/source/blender/editors/object/object_bake_api.c b/source/blender/editors/object/object_bake_api.c
index 6c084e6f67e..b2df61ac209 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(