Phase 15: host trusted LADSPA processors with persisted graph state
This commit is contained in:
parent
c3eadee891
commit
f72314b5a3
24 changed files with 1046 additions and 70 deletions
|
|
@ -15,6 +15,7 @@
|
|||
#include <cstring>
|
||||
#include <cmath>
|
||||
#include <initializer_list>
|
||||
#include <cstdlib>
|
||||
|
||||
/* Fake only the public C backend boundary. Real FLTK widgets, callbacks and
|
||||
* timers run under Xvfb; no server/device is required or touched. */
|
||||
|
|
@ -456,6 +457,45 @@ int main(int argc, char **argv)
|
|||
window.do_callback();
|
||||
}
|
||||
CHECK(alive == 0U);
|
||||
if (const char *module = std::getenv("XTC_TEST_PLUGIN")) {
|
||||
reset();
|
||||
MainWindow window(false);
|
||||
auto *sequence = timeline(&window);
|
||||
size_t id = SIZE_MAX;
|
||||
CHECK(window.add_plugin(module,0,&id) == XTC_OK);
|
||||
xtc_plugin_spec spec{};
|
||||
CHECK(xtc_graph_get_plugin(xtc_project_graph(sequence->project()),id,&spec) == XTC_OK);
|
||||
CHECK(window.set_plugin_control(id,spec.ports[0],.5f) == XTC_OK);
|
||||
CHECK(xtc_graph_get_plugin(xtc_project_graph(sequence->project()),id,&spec) == XTC_OK && spec.values[0] == .5f);
|
||||
CHECK(window.set_plugin_control(id,spec.ports[0],3) == XTC_ERR_UNSUPPORTED);
|
||||
CHECK(xtc_graph_get_plugin(xtc_project_graph(sequence->project()),id,&spec) == XTC_OK && spec.values[0] == .5f);
|
||||
CHECK(window.undo(false) == XTC_OK);
|
||||
CHECK(xtc_graph_get_plugin(xtc_project_graph(sequence->project()),id,&spec) == XTC_OK && spec.values[0] == 1);
|
||||
CHECK(window.undo(true) == XTC_OK);
|
||||
CHECK(xtc_graph_get_plugin(xtc_project_graph(sequence->project()),id,&spec) == XTC_OK && spec.values[0] == .5f);
|
||||
const xtc_project *before = sequence->project();
|
||||
CHECK(window.add_plugin("/absent/plugin.so",0) == XTC_ERR_NOT_FOUND && sequence->project() == before);
|
||||
CHECK(window.add_plugin(module,2) == XTC_ERR_UNSUPPORTED && sequence->project() == before);
|
||||
CHECK(window.save_project("/tmp/xtc-gui-plugin-test.xtc") == XTC_OK);
|
||||
CHECK(window.new_project() == XTC_OK);
|
||||
CHECK(window.open_project("/tmp/xtc-gui-plugin-test.xtc") == XTC_OK);
|
||||
CHECK(xtc_graph_get_plugin(xtc_project_graph(sequence->project()),id,&spec) == XTC_OK && spec.values[0] == .5f);
|
||||
xtc_project *missing = nullptr; xtc_graph *graph = nullptr; size_t absent;
|
||||
CHECK(xtc_project_create(&missing) == XTC_OK);
|
||||
CHECK(xtc_graph_create(8,&graph) == XTC_OK);
|
||||
std::strcpy(spec.path,"/absent/xtc-test-plugin.so");
|
||||
CHECK(xtc_graph_add_plugin(graph,&spec,&absent) == XTC_OK);
|
||||
CHECK(xtc_project_set_graph(missing,graph) == XTC_OK);
|
||||
CHECK(xtc_project_save(missing,"/tmp/xtc-gui-missing-plugin.xtc") == XTC_OK);
|
||||
before = sequence->project();
|
||||
CHECK(window.open_project("/tmp/xtc-gui-missing-plugin.xtc") == XTC_ERR_NOT_FOUND && sequence->project() == before);
|
||||
CHECK(contains(&window,"/absent/xtc-test-plugin.so"));
|
||||
CHECK(window.add_plugin(module,3) == XTC_ERR_INVALID_STATE && sequence->project() == before);
|
||||
xtc_project_destroy(missing); xtc_graph_destroy(graph);
|
||||
unlink("/tmp/xtc-gui-missing-plugin.xtc");
|
||||
unlink("/tmp/xtc-gui-plugin-test.xtc");
|
||||
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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue