feat: plan composition phases and persist named arrangement markers

This commit is contained in:
Johannes Findeisen 2026-11-06 00:29:48 +01:00
commit 64e5ab170f
19 changed files with 323 additions and 9 deletions

View file

@ -1309,6 +1309,7 @@ int main(int argc, char **argv)
unlink(path.c_str());
}
}
if(!std::getenv("XTC_TEST_NEXT_DAW_ONLY")) {
reset();
{
MainWindow window(false,"");window.show();CHECK(window.create_track(true)==XTC_OK);
@ -1359,6 +1360,17 @@ int main(int argc, char **argv)
CHECK(window.new_project()==XTC_OK && window.mix_snapshot(0,false)==XTC_ERR_NOT_FOUND);
window.do_callback();
}
}
reset();
{
MainWindow window(false,"");window.show();CHECK(window.create_track(true)==XTC_OK);
auto *s=timeline(&window);s->position(960);CHECK(s->marker("Verse")==XTC_OK);
size_t markers=0;xtc_project_marker_count(s->project(),&markers);CHECK(markers==1);
CHECK(window.undo()==XTC_OK);xtc_project_marker_count(s->project(),&markers);CHECK(markers==0);
CHECK(window.undo(true)==XTC_OK);xtc_project_marker_count(s->project(),&markers);CHECK(markers==1);
window.detach_editor(0,true);pump();window.detach_editor(0,false);
window.do_callback();
}
if (failures != 0) return 1;
std::printf("GUI controls/errors/views/timers/cleanup passed: %u opens, %u closes.\n", opens, closes);
return 0;

View file

@ -56,7 +56,7 @@ def main():
run([str(binaries / 'xtc-check'), '--inspect', str(resources / 'xtc/examples/modern-session.xtc')])
assert (docs / 'WORKSPACE.md').is_file()
diagnose = subprocess.check_output([str(binaries / 'xtc-check'), '--diagnose'], text=True)
assert 'Project formats: 1..15' in diagnose and 'JACK compiled:' in diagnose
assert 'Project formats: 1..16' in diagnose and 'JACK compiled:' in diagnose
# Replacing a file symlink must not overwrite an unrelated target.
protected = stage / 'unrelated-target'
protected.write_text('keep unrelated target\n')

View file

@ -84,7 +84,7 @@ with tempfile.TemporaryDirectory(prefix="xtc-inspect-") as directory:
project.write_text(malformed)
check("--validate", project, 1)
for text, messages in [
(base.replace("XTC_PROJECT 10", "XTC_PROJECT 999"), ("line 1", "999", "1..15")),
(base.replace("XTC_PROJECT 10", "XTC_PROJECT 999"), ("line 1", "999", "1..16")),
("XTC_PROJECT 10\n", ("line 2", "APP")),
(base.replace("TEMPO 120000", "TEMPO 0"), ("line 3", "TEMPO")),
(base + "OPTIONAL_FUTURE 1\n", ("Unknown fields",)),