fix(render-queue): distinguish settings template on queue creation (#542)

This commit is contained in:
Nigel Ihza Firdausy 2026-10-10 15:55:02 +07:00
parent 813c7c4650
commit 65bf4702fd
2 changed files with 24 additions and 1 deletions

View File

@ -526,7 +526,12 @@ fn add(s: &mut Session, p: &Value) -> Result<Value> {
}
}
apply_settings(&mut it.settings, &templates, p, "renderQueue.add")?;
apply_output(&mut it.output, &templates, s.state.region_of_interest, p, "renderQueue.add")?;
// "template" belongs to Render Settings on add, not Output Module.
let mut output_params = p.clone();
if let Some(object) = output_params.as_object_mut() {
object.remove("template");
}
apply_output(&mut it.output, &templates, s.state.region_of_interest, &output_params, "renderQueue.add")?;
if let Some(l) = enum_p(p, "log", "renderQueue.add", RenderLog::parse, "errorsOnly|plusSettings|plusPerFrameInfo")? {
it.log = l;
}

View File

@ -165,3 +165,21 @@ fn without_exporter() {
assert_eq!(f["formats"].as_array().unwrap().len(), 12);
assert_eq!(f["formats"][0]["available"], false);
}
#[test]
fn queue_add_accepts_render_settings_templates_without_output_module_namesakes() {
let mut s = Session::default();
s.execute("comp.new", json!({"name":"C","width":64,"height":64,"duration":1})).unwrap();
let all = s.execute("renderQueue.templates", json!({})).unwrap();
let names = all["renderSettings"].as_array().unwrap();
assert!(!names.is_empty());
for row in names {
let name = row["name"].as_str().unwrap();
let expected = s.project.render_templates.render_settings(name).unwrap();
s.execute("renderQueue.add", json!({"comp":"C","template":name})).unwrap();
assert_eq!(s.project.render_queue.last().unwrap().settings, expected);
}
let count = s.project.render_queue.len();
assert!(s.execute("renderQueue.add", json!({"comp":"C","template":"Unknown Settings"})).is_err());
assert_eq!(s.project.render_queue.len(), count);
}